728x90

entitymanager 3

기본 Q 생성

쿼리 타입(Q)은 사용하기 편하도록 아래와 같이 기본 인스턴스를 보관하고 있다. 하지만 같은 엔티티를 조인하거나 같은 엔티티를 서브쿼리에 사용하면 같은 별칭이 사용되므로 이때는 별칭을 직접 지정해서 사용해야 한다. public class QMember extends EntityPathBase { public static final QMember member = new QMember("member1"); ... } QMember qMember = new QMember("m"); //직접 지정 QMember qMember = QMember.member; //기본 인스턴스 사용 쿼리 타입의 기본 인스턴스를 사용하면 아래와 같이 import static을 활용해서 코드를 더 간결하게 작성할 수 있다. impor..

QueryDSL 2022.06.17

Criteria 기초(feat. JPQL의 빌더 클래스)

Criteria 쿼리는 JPQL을 자바 코드로 작성하도록 도와주는 빌더 클래스 API다. Criteria를 사용하면 문자가 아닌 코드로 JPQL을 작성하므로 문법 오류를 컴파일 단계에서 잡을 수 있고 문자 기반의 JPQL보다 동적 쿼리를 안전하게 생성할 수 있는 장점이 있다. 하지만 실제 Criteria를 사용해서 개발해보면 코드가 복잡하고 장황해서 직관적으로 이해가 힘들다는 단점도 있다. //JPQL: select m from Member m CriteriaBuilder cb = em.getCriteriaBuilder(); //Criteria 쿼리 빌더 ...1 //Criteria 생성, 반환 타입 지정 ...2 CriteriaQuery cq = cb.createQuery(Member.class); R..

JPA 2022.06.16

JPAQueryFactory를 필드에서 제공하자(feat. 동시성 문제는 스프링이 해결)

(Java JPA) JPAQueryFactory를 필드로 제공할 때, 동시성 문제 (As-is) → 기존 JPAQueryFactory를 메소드 안에 생성한 버전 @SpringBootTest @Transactional public class QuerydslBasicTest { @PersistenceContext EntityManager em; @Test public void startQuerydsl() { JPAQueryFactory queryFactory = new JPAQueryFactory(em); //JPAQueryFactory를 메소드 안에 생성 QMember m = new QMember("m"); Member findMember = queryFactory .select(m) .from(m) .w..

JPA 2022.02.14
728x90