JPA/QueryDSL

· JPA/QueryDSL
querydsl 을 사용하기위해 JPAQueryFactory를 다음과 같이 스프링 빈으로 등록하였다. @Bean JPAQueryFactory jpaQueryFactory(EntityManager em) { return new JPAQueryFactory(em); } 참고 스프링이 주입해주는 엔티티 매니저는 실제 동작 시점에 진짜 엔티티 매니저를 찾아주는 프록시용 가짜 엔티티 매니저이다. 이 가짜 엔티티 매니저는 실제 사용 시점에 트랜잭션 단위로 시ㄹ제 엔티티 매니저를 할당해준다. 따라서 동시성문제는 발생하지 않는다. 1. 기본 설정 1) 조회 최적화 용 DTO를 생성 @Data public class MemberTeamDto { private Long memberId; private String user..
· JPA/QueryDSL
1. 프로젝션 결과 반환 1) 기본 - 대상 하나 List result = queryFactory .select(member.username) .from(member) .fetch(); 2) 튜플 - 대상 둘 이상 List result = queryFactory .select(member.username, member.age) .from(member) .fetch(); 3) DTO조회 - 순수 JPA List result = em.createQuery("select new study.querydsl.dto.MemberDto(m.username,m.age)" + " from Member m", MemberDto.class) .getResultList(); 패키지이름이 지저분함 생성자 방식만 지원 4) qu..
· JPA/QueryDSL
1. JPAQueryFactory EntityManager로 JPAQueryFactory를 생성한다. Querydsl은 JPQL 빌더이다. JPQL: 문자(실행시점 오류), Querydsl:코드(컴파일 시점 오류) JPQL: 파라미터 바인딩 직접, Querydsl: 파라미터 바인딩 자동 처리 querydsl은 JPQL을 작성해주는 도구이다. EntityManager로 JPAQueryFactory를 생성하고, JPAQueryFactory를 이용하여 Querydsl로 JPQL을 생성한다. JPAQueryFactory를 필드로 제공하면 동시성 문제는 어떻게 될까? 스프링 프레임워크는 여러 쓰레드에서 동시에 같은 EntityManager에 접근해도, 트랜잭션 마다 벼도의 영속성 컨텍스트를 제공하기 때문에, 동시..
코드 미식가
'JPA/QueryDSL' 카테고리의 글 목록