🖤인프런만의 100% 블프 이벤트🖤

🎁100% 환급+할인+당첨 가능한 인프런 블프 구경오세요!

블로그

자바 ORM 표준 JPA 프로그래밍 기본편(김영한) 2

프로젝션 JPQL의 경우 패키지명까지 참조해서 생성자 매핑시켜주기 ex) select com.myproject.myapp.dto.MemberDto(m.id, m.name) ... result class 또한 DTO로 매핑 querydsl의 경우 @QueryProjection을 통해 querydsl용 생성자를 만들어서 매핑 가능 이 경우, select절에 Projections.constructor(Dto.class, ...)로 매핑 Projections.bean과 Projections.field에 비해 연쇄 수정이 적어지는 장점이 있음   페치 조인 페치 조인은 연관관계 엔티티까지 한 번에 불러오는 것 일대일 연관관계에서 주로 사용 일대다 컬렉션 페치 조인은 한 번만 지원되며,사용 시 중복조회가 일어나기 때문에 select distinct 사용하여야함 @BatchSize() 또는 hibernate.default_batch_fetch_size 사용해서 fetch join으로 불러올 엔티티 개수 지정 가능 원하는 필드만 조회하거나 연관관계가 조건절에만 필요한 경우 fetch join이 아닌 일반 조인 사용할 것.   다형성 쿼리 상속 연관관계 SINGLE_TABLE 타입의 경우type(i) in (Book, Movie) 또는 treat(i as Book).author = 'kim' 으로 사용   정적 재사용 쿼리 @SqlResultSetMapping(name = "NamedQuery 이름",entities = {    @EntityResult(entityClass=Member.class,                                   fields = { @FieldResult(name = 'id', column = 'order_id') }                                   column이 실제 테이블 컬럼명, 타입도 지정 가능                                  )           },columns = {@ColumnResult(name = 'item_name')}이것을 통해 projection 필드(가공한 필드)를 가져올 수 있음) NamedQuery 재사용 가능한 정적 쿼리 - 파라미터도 전달 가능 어플리케이션 로딩 시점에 쿼리 검증함 @Query도 NamedQuery @NamedQuery(name = "", query = "") NamedNativeQuery name, query, resultClass   벌크연산 변경감지만으로 데이터 수정하면 업데이트 쿼리가 남발됨. update, delete, insert select 사용 execute하면 영향받은 엔티티수 반환 벌크 연산은 DB에 직접 쿼리 날리기 때문에 영속성 컨텍스트 초기화가 필요@Modifying 또는 em.flush(); em.clear();        

JPA강의김영한프로젝션페치조인다형성쿼리Named쿼리벌크연산

채널톡 아이콘