본문 바로가기

Today I Learned123

(24.07.03)[12주차] QueryDSL사용을 위한 Repository 분리 QueryDSL로 JPA에서 쿼리문을 구현하려고 했지만, 기존에 JpaRepository 를 상속받는 Repository를 사용하고 있었기에 내부에 QueryDSL 쿼리역시 구현을 할 수 없었다. 그렇다고 Service단에서 그 쿼리를 구현하는 것은 계층을 분리하고자 하는 의의와 벗어나게 되는데, 그렇다면 어떻게 QueryDSL을 사용할 수 있을지에 대한 구조 정리QueryDSL을 사용하기 위한 Repository 구성JpaRepository만 상속 받는 형태의 Repository로 Service 계층에서 findBy save delete 등의 쿼리 메서드를 사용할 수 있었지만, QueryDSL을 사용하기 위해서는 이 상속받고 있는 Repository를 사용하는 것이 아닌 위의 그래프처럼 Custom R.. 2024. 7. 3.
(24.07.02)[12주차] QueryDSL의 Wildcard 와 Count count를 사용하여 총 갯수를 구하려는 쿼리문을 QueryDSL로 작성을 해야할 필요가 있다.하지만, 어떤 상황에 따라서는 Join 에 따라서 count가 실행되지 않을 수 있다.  QueryDSL 의 Wildcard 사용 이슈public ProfileResponseDto getUserProfile(String userName) { QUser qUser = QUser.user; QLike qLike = QLike.like; ... Long aptLikesCount = jpaQueryFactory.select(Wildcard.count) .from(qLike) .leftJoin(qLike.user, qUser).f.. 2024. 7. 2.
(24.06.28)[11주차] QueryDSL과 SQL의 비교와 정리 QueryDSL, Query Domain Specific Language는 JPA 에서의 쿼리 전용 클래스로 Entity 의 매핑정도를 쿼리에 적합하도록 재구성을 해주는 기술로,JPA를 통해 Java에서 DB의 데이터를 SQL 처럼 쿼리문과 유사하게 메서드를 사용해서 DB 값을 조작할 수 있도록 한다.따라서 JPA 는 SQL의 DML과 매우 닮아있지만, 그렇다고 똑같이 사용하면 안되기 때문에필수적이 메서드를 비교하면서 나름 찾아보면서 정리할 수 있도록 한다.QueryDSL과 SQLJPAQueryFactory재구성한 Q클래스를 객체/함수 를 사용해서 쿼리로 작성, 실행미리 Config를 통해서 EntityManager로 Bean 등록이 되어있다고 가정해서 아래 예제들을 활용한다고 생각할 수 있어야함!@Pe.. 2024. 6. 28.
(24.06.27)[11주차] JPA 심화 강의 02 (마무리) 기존에 배웠던 JPA Repository 관련 심화 내용이 진행이 되었기 떄문에해당 TIL에는 JPQL과 QueryDSL 중심으로 간단히 정리 (자세한 정리와 실습 코드들은 Notion 연계) 이번에는 간단한 정보를 훝는 것만으로도 이해하는데 조금 어려웠기 때문에 일단은 학습 시간내에 최대한 간추리고추후,  QueryDSL은 한번더 자세하게 학습하여 다룰 수 있어야할 것JPA 심화 강의 간단정리더보기JPQL, Java Persistence Query LanguageTable 이 아닌 Entity(객체) 기준으로 작성하는 쿼리EntityMananger.createQuery()쿼리 문자열과 Entity 를 직접 넣어서 쿼리를 작성변경시 관련 쿼리 String 모두 수정해야런타임 에러가 발생하기 때문에 오류를.. 2024. 6. 27.