ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Querydsl
    WEB/Spring 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

    'WEB > Spring' 카테고리의 다른 글

    [Spring] JPA  (0) 2023.02.15
    [Spring] Aop와 Scope  (0) 2022.10.31
Designed by Tistory.