JPA/JPQL 11

fetch join

최적화가 필요하면 사용 SQL 조인 종류가 아님 연관된 엔티티나 컬렉션을 SQL 한번에 함께 조회하는 기능 JPQL 에서 최적화가 필요한 곳에서 사용함 join fetch 명령어 사용 지연 로딩으로 설정되어있어도 fetch join이 우선임 쿼리는 inner join으로 생성되나, entity 객체에 from 절의 모든 객체가 자동으로 담기게 된다. inner join은 from 절의 모든 객체가 자동 세팅이 안된다. String query = "select m from Member m join fetch Team t on t.id = m.team.id"; List resultList = em.createQuery(query, Member.class).getResultList(); // 정상 실행되며 M..

JPA/JPQL 2020.06.09

벌크 연산

조건에 해당하는 모든 데이터를 일괄 수정시 사용 int resultCount = em.createQuery("update Member m set m.age = 20").executeUpdate(); insert into select 사용 가능. 벌크 연산은 영속성 컨텍스트를 무시하고 DB에 직접 쿼리 수행 ** 벌크 연산을 먼저 수행, 벌크 연산 수행 후 영속성 컨텍스트 초기화 em.clear(); 반드시 수행할것(DB 수정 이후 영속성 컨텍스트를 초기화하지 않으면, 작업한 내역이 보이지 않음.)

JPA/JPQL 2020.06.09

JPQL 기본 문법

TypedQuery : 리턴 타입이 확실한 경우 사용 TypedQuery query1 = em.createQuery("select m from Member m", Member.class); TypedQuery query2 = em.createQuery("select m.username from Member m", String.class); Query : 리턴 타입이 정확하지 않을 경우 사용 Query query3 = em.createQuery("select m.username, m.age from Member m"); 단순 값을 DTO로 조회 : 패키지 명을 전부 적어야함 List resultList = em.createQuery("select new jpql.MemberDTO(m.username, m...

JPA/JPQL 2020.06.09