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";
}
}