QueryDsl

    JPQL 과 QueryDsl

    기본 문법 JPQL vs Querydsl @Autowired EntityManager em; @Test public void startJPQL() throws Exception { //member1 find String qlString = "select m from Member m where m.username = :username"; Member findMember = em.createQuery(qlString, Member.class) .setParameter("username", "member1").getSingleResult(); assertThat(findMember.getUsername()).isEqualTo("member1"); } @Test public void startQuerydsl()..

    Querydsl join문 기본문법

    조인 -기본 조인 -> Querydsl에서는 JOIN 함수도 역시 제공한다. join(), innerJoin(): 내부조인(inner join) leftJoin(): left외부조인(left outer join) rightJoin():right외부조인(right outer join) JPQL의 on과 성능 최적화를 위한 fetch 조인제공 그렇다면 연관관계가 없는 엔티티간의 조인은 어떻게 하는가? → 세타 조인 /** * 세타 조인 * 회원의 이름이 팀 이름과 같은 회원 조회 * * @throws Exception */ @Test public void theta_join() throws Exception { //given em.persist(new Member("teamA")); em.persist(ne..

    querydsl 벌크연산 수행 주위사항

    @Commit @Test public void bulkUpdate() throws Exception{ //member1=10->비회원 //member2=20->비회원 //member3=30->유지 //member4=40->유지 long count = queryFactory .update(member) .set(member.username, "비회원") .where(member.age.lt(28)) .execute(); //DB에서 꺼내온 데이터보다 영속성컨텍스트가 우선권을가짐 //벌크 연산후 flush와 clear을 해줘라 em.flush(); em.clear(); List result = queryFactory .selectFrom(member) .fetch(); for (Member member1 :..

    Query dsl 설정 및 테스트

    🌱 Querydsl? 쿼리를 자바코드로 작성할 수 있게 도와주는 기술이다. Spring Data JPA로 해결하지 못하는 복잡한 쿼리/동적 쿼리를 해결할 수 있다. 자바코드로 작성하기 때문에 문법오류를 컴파일 시점에 잡아낼 수 있다. 🌱 build.gradle에서 Querydsl 설정 buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'org.springframework.boot' version '2.7.7' id 'io.spring.dependency-management' version '1.0.15.RELEASE' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" ..