JPA

JPA

연관 관계가 Lazy Loading일 때, 해당 엔티티를 사용하는 메서드에 @Transactional이 없다면?

🤔 문제 상황JPA에서 엔티티 간 연관 관계를 Lazy Loading으로 설정했을 때, 이 엔티티를 사용하는 메서드에 @Transactional 어노테이션이 없다면 LazyInitializationException이 발생할 수 있다.예시 코드로 보자면@Entitypublic class User { @Id private Long id; @OneToMany(fetch = FetchType.LAZY) private List orders;}public class UserService { public void processUserOrders(Long userId) { User user = userRepository.findById(userId).orElseThrow(); ..

JPA

Spring Data JPA에서 Fetch Join과 CountQuery를 사용한 페이징 최적화

서론 N+1 문제란 Spring Data JPA를 사용하다보면 N+1 문제에 대해서 많이들 겪곤 한다. N+1 문제란 관계형 데이터베이스에서 일반적으로 발생하는 성능 이슈다. 예를 들어, 게시물(Post)과 사용자(User) 그리고 댓글(Comment)이라는 엔티티가 있다고 가정해 보자. 게시물 목록을 가져올 때, 각 게시물에 대한 사용자 정보와 댓글 정보를 함께 가져와야 하는 경우 N+1 문제가 발생할 수 있다. Fetch Join 이러한 문제를 해결하기 위해 Fetch Join을 사용하여 연관된 엔티티를 한 번의 쿼리로 함께 로드할 수 있다. 즉 Fetch Join은 관계형 데이터베이스에서 조인을 통해 필요한 데이터를 한 번에 가져오는 방식이다. Fetch Join 사용 X - 연관된 테이블에 등록..

JPA

영속성 컨텍스트란?

본 게시물은 인프런 김영한님의 JPA강의를 보고 정리한 글입니다 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어 엔티티를 영구 저장하는 환경이라는 뜻 EntityManager.persist(entity); 영속성 컨텍스트의 생명주기 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속 (managed) 영속성 컨텍스트에 관리되는 상태 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제 (removed) 삭제된 상태 영속성 컨텍스트의 이점 1차 캐시 동일성(identity) 보장 영속성 컨텍스트 안에 있는 1차 캐시 부터 조회하여 찾는다 트랜잭션을 지원하는 쓰기 지연(transactional write-behind) 영속성 컨텍스트 안의 쓰기..

맹수호빵
'JPA' 카테고리의 글 목록