오늘의 배움

🚨 에러가 발생한 상황 투표 취소 API를 테스트 하던 중에 아래에 적힌 에러가 발생했다. No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call 문제가 일어난 코드는 아래와 같다. public void cancel( final Long voteId, final Long memberId ) { final Vote vote = voteReader.read(voteId); if (voterRepository.existsByVoteAndMemberId(vote, memberId)) { voterRepository.deleteByVoteAndMemberId(vote, me..
Cascade의 사전적 정의는 "계단 폭포", "폭포처럼 흐르다." 계단식의 연쇄 반응을 말하기도 한다.JPA CascadeCascade는 엔티티 간의 연결을 통해 엔티티의 상태를 자동으로 전파하는 기능이다. 부모 엔티티가 변경되면 변경 내용이 자식 엔티티에도 적용된다. Cascade TypePERSISTCascadeTyep.PERSIST를 사용하면, persist 작업이 부모 엔티티에서 자식 엔티티로 전파된다. MERGEmerge 작업은 준영속 상태의 엔티티를 영속성 컨텍스트에 다시 병합하는 작업이다. 즉, 영속 상태로 변경하는 작업이다. CascadeTyep.MERGE를 사용하면, merge 작업이 부모 엔티티에서 자식 엔티티로 전파된다. REMOVECascadeTyep.REMOVE를 사용하면, re..
커버링 인덱스(covering index)쿼리에 필요한 모든 결과를 제공하는 인덱스를 커버링 인덱스라고 한다. 쿼리는 인덱스 테이블에서 값을 반환하므로 실제 레코드를 읽어올 필요가 없다. 따라서 디스크 I/O가 절약된다. 예를 들어, 주문 테이블에 shop_id 인덱스가 있다고 해보자. 이때 아래의 쿼리를 실행하면 커버링 인덱스가 사용된다.SELECT shop_id FROM orders WHERE shop_id = 6; 참고로 커버링 인덱스가 적용된 경우, 실행 계획의 Extra 필드에 Using index 라고 나온다. + Real MySQL 책 읽으면서 헷갈렸던 부분 🧐Real MySQL 책에서 클러스터링 인덱스의 장점으로 아래와 같은 내용이 나온다.테이블의 모든 세컨더리 인덱스가 프라이머리 키를 가..
yiseull
'오늘의 배움' 카테고리의 글 목록