꼬리의 꼬리를 무는 querydsl

트곰·2022년 3월 31일
0

newproject

목록 보기
7/13

querydsl의 강의를 보니, EntityManager가 나온다. Spring Boot를 사용하면, 내가 직접 EntityManager를 사용하지 않더라도 Application이 시작될 때, 자동으로 EntityManager가 bean을 등록한다고 한다.

EntityManager

EntityManager는 말 그대로, 엔티티를 관리하는 역할을 수행하는 클래스라고 한다.
엔티티 매니저는 내부에 영속성 컨텍스트(Persistence Context)를 두고 엔티티를 관리한다고 한다.
영속성은 JPA의 P....?
영속성 컨텍스트는 엔티티를 영구적으로 저장하는 환경이라고 하는데, 영속성이라는 단어는 봐도봐도
레이어를 그림으로 보더라도 와닿지는 않는다ㅠㅠ

JPAQueryFactory

CrudRepository & JpaRepository


JPA를 사용하더라도, CrudRepository만 사용했는데, JpaRepository가 있었다...!
역시 프로젝트를 구상하고 만들어가는 것이 그냥 개념 학습하는 것보다 더 많은 키워드를 접하고 학습하게 된다.
필요에 의해서 찾아보고 적용해보니까 그런 것 같다!!

여튼! JpaRepository도 결국 CrudRepository가 부모인 인터페이스다.
더 하위로 들어가면, JpaRepositoryImplementation<T,ID>가 자녀고, QuerydslJpaRepository<T,ID extends Serializable>가 자녀의 자녀다.
구현체같은 이름을 가진 JpaRepositoryImplementation<T,ID>는 인터페이스고
QuerydslJpaRepository<T,ID extends Serializable>는 인터페이스가 아닌 클래스다.


전부 그려보자면 이런 모양이라고 할 수 있다.

결국 두 인터페이스의 차이는 페이징, 소팅 작업에 대한 기능의 추가라고 이해해도 무방할 것 같다.
CrudRepository는 Iteratable을 리턴했으면, JpaRepository는 List를 리턴하는 차이도 있다.

이전까지는 페이징 처리하는 작업이 없어서 CrudRepository로 충분했지만, 지금 프로젝트에는 JpaRepository를 적용해서 사용해야겠다.

profile
개발자가 되기 위해서 공부중입니다 :ㅡ)

0개의 댓글