WEB/Spring

[Spring] Querydsl

다콩잉 2023. 2. 15. 15:30

Querydsl이란?

  • HQL(Hibernate Query Language) 쿼리를 타입에 안전하게 생성 및 관리할 수 있도록 해주는 프레임워크
  • Querydsl을 통하여 생성되는 정적 Q-type 클래스를 이용하여 SQL과 같은 쿼리를 생성하도록 도와주는 프레임워크.

 

 

Querydsl이 필요한 이유

  • JPA를 사용할 때, 복잡한 쿼리가 필요할 경우, JPA 자체 제공 메서드만으로 해결하기에 어려움이 있음.
@Configuration
public class QueryDslConfig {

    // 영속성 관리 어노테이션
    @PersistenceContext
    private EntityManager entityManager;

    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }
}
import static application.study.db.QType.QUser.user;

@Repository
public class UserRepositoryCustomImpl{

    private final JPAQueryFactory jpaQueryFactory;

    public UserRepositoryCustomImpl(JPAQueryFactory jpaQueryFactory) {
        this.jpaQueryFactory = jpaQueryFactory;
    }

    public List<User> findAllByQuerydsl() {
        return jpaQueryFactory.selectFrom(user).fetch();
    }
    @Transactional
    public String updateByQuerydsl(String id, String pw){
        jpaQueryFactory.update(user)
                .set(user.pw, pw)
                .where(user.id.eq(id))
                .execute();
        System.out.println("업데이트 성공");
        return "S";
    }
    @Transactional
    public String deleteByQuerydsl(String id, String pw){
        jpaQueryFactory.delete(user)
                .where(user.id.eq(id))
                .execute();
        System.out.println("삭제 성공");
        return "S";
    }
}
728x90