본문 바로가기
반응형

JPA35

[스프링 데이터 JPA] 01. 순수 JPA 기반 리포지토리 만들기 예제 도메인 모델 Member 엔티티 package study.datajpa.entity; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import javax.persistence.*; @Entity @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) @ToString(of = { "id", "username", "age" }) public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private S.. 2021. 12. 28.
[스프링 부트와 JPA 활용2] 08. QueryDSL 소개 실무에서는 조건에 따라서 실행되는 쿼리가 달라지는 동적 쿼리를 많이 사용한다. 주문 내역 검색으로 돌아가보고, 이 예제를 Querydsl로 바꾸어 보자. Querydsl로 처리 public List findAll(OrderSearch orderSearch) { QOrder order = QOrder.order; QMember member = QMember.member; return query .select(order) .from(order) .join(order.member, member) .where(statusEq(orderSearch.getOrderStatus()), nameLike(orderSearch.getMemberName())) .limit(1000) .fetch(); } private Bo.. 2021. 12. 18.
[스프링 부트와 JPA 활용2] 07. 스프링 데이터 JPA 소개 스프링 데이터 JPA는 JPA를 사용할 때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어 있다. 기존의 MemberRepository 를 스프링 데이터 JPA로 변경해보자. MemberRepository package jpabook.jpashop.repository; import jpabook.jpashop.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; public interface MemberRepository extends JpaRepository { List findByName(String name); } findOne() → findById()로.. 2021. 12. 18.
[스프링 부트와 JPA 활용2] 06. API 개발 고급 - 실무 필수 최적화 OSIV와 성능 최적화 Open Session In View: 하이버네이트 Open EntityManager In View: JPA (관례상 OSIV라 한다.) OSIV ON spring.jpa.open-in-view : true 기본값 이 기본값을 뿌리면서 애플리케이션 시작 시점에 warn 로그를 남기는 것은 이유가 있다. OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트와 데이터베이스 커넥션을 유지한다. 그래서 지금까지 View Template이나 API 컨트롤러에서 지연 로딩이 가능했던 것이다. 지연 로딩은 영속성 컨텍스트가 살아있어야 가능하고, 영속성 컨텍스트는 기본적으로 데이터베이스 커넥션을 유지한다. 이것 자체가 큰 장점이다... 2021. 12. 18.
반응형