JPA
[JPA] @Where 어노테이션 사용법
예제 및 테스트 코드는 github 에서 확인 가능합니다. - JPA @Where 어노테이션 사용법 - @Where 예시, 사용법 - @Where 테스트 코드 - case1. 기본 엔티티 조회 - case2. Lazy Loading 조회 - case3. JPQL 조회 - case4. QueryDSL 조회 - case5. QueryDSL Join 조회 - case6. QueryDSL DTO 조회 - @Where 주의사항 - case1. native query 를 사용하는 경우 - case2. 식별자로 조회시 1차 캐시의 데이터를 조회하는 경우 - @Where Deprecated JPA @Where 어노테이션 사용법 안녕하세요. 이번에는 JPA 의 @Where 어노테이션의 사용 방법에 대해 알아보겠습니다. ..
[JPA] OSIV (Open-Session-In-View) 동작원리 및 주의사항
예제 및 테스트 코드는 github 에서 확인 가능합니다. OSIV(Open Session In View) 동작원리 및 주의사항 이번엔 JPA/Hibernate 에서 사용되는 개념인 OSIV(Open Session In View) 에 대해 알아보겠습니다. OSIV 는 영속성 컨텍스트를 View 영역까지 열어둔다는 기능입니다. 즉, View 레이어에서도 지연로딩과 같은 영속성 컨텍스트의 특징을 사용할 수 있다는 이야기입니다. Spring Boot 에서의 OSIV 는 기본적으로 활성화된 상태입니다. 그리고 설정을 명시하지 않고 default 로 어플리케이션을 실행하게 되면 다음과 같은 경고메시지를 만나볼 수 있습니다. spring.jpa.open-in-view is enabled by default. The..
JPA 영속성 컨텍스트(Persistence Context)의 5가지 특징
예제 및 테스트 코드는 github 에서 확인 가능합니다.영속성 컨텍스트 특징1차 캐시변경 감지 (Dirty Checking)동일성 보장지연 로딩(Lazy Loading)쓰기 지연1차 캐시영속성 컨텍스트 내부에서 엔티티를 캐시로 저장하는 것일반적으로 @Transactional 어노테이션과 라이프사이클이 동일함OSIV(Open Session In View) 가 true 라면 ServiceLayer 에서@Transactional 이 종료되어도 PresentationLayer 까지도 1차 캐시는 유지됨Jpa 는 데이터 조회시 캐시를 우선적으로 조회하고 캐시에 데이터가 없으면 DB를 조회함@Transactionalpublic Team findTeam(Long id) { return teamRepositor..
JPA 영속성 컨텍스트(Persist Context)에 대해 알아보자
영속성 컨텍스트란 ?엔티티를 관리하고 저장하는 환경Jpa 어플리케이션과 Database 사이에서 객체를 관리하는 논리적 개념엔티티의 생명주기비영속 (new/tansient)영속(managed)준영속(detached)삭제(removed) Team.java@NoArgsConstructor@Entity@Getterpublic class Team { public Team(String name) { this.name = name; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name;}비영속 (new/transient)영속화 되기 전의 상태순수한 Enti..