JPA

    [JPA] @Where 어노테이션 사용법

    [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) 동작원리 및 주의사항

    [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가지 특징

    JPA 영속성 컨텍스트(Persistence Context)의 5가지 특징

    예제 및 테스트 코드는 github 에서 확인 가능합니다. 영속성 컨텍스트 특징 1차 캐시 변경 감지 (Dirty Checking) 동일성 보장 지연 로딩(Lazy Loading) 쓰기 지연 1차 캐시 영속성 컨텍스트 내부에서 엔티티를 캐시로 저장하는 것 일반적으로 @Transactional 어노테이션과 라이프사이클이 동일함 OSIV(Open Session In View) 가 true 라면 ServiceLayer 에서 @Transactional 이 종료되어도 PresentationLayer 까지도 1차 캐시는 유지됨 Jpa 는 데이터 조회시 캐시를 우선적으로 조회하고 캐시에 데이터가 없으면 DB를 조회함 @Transactional public Team findTeam(Long id) { return te..

    JPA 영속성 컨텍스트(Persist Context)에 대해 알아보자

    JPA 영속성 컨텍스트(Persist Context)에 대해 알아보자

    영속성 컨텍스트란 ? 엔티티를 관리하고 저장하는 환경 Jpa 어플리케이션과 Database 사이에서 객체를 관리하는 논리적 개념 엔티티의 생명주기 비영속 (new/tansient) 영속(managed) 준영속(detached) 삭제(removed)Team.java @NoArgsConstructor @Entity @Getter public class Team { public Team(String name) { this.name = name; } @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; }비영속 (new/transient) 영속화 되기 전의 상태 순수한 Entity 객체 Entity..