domain, dto, setter, 사용자정의쿼리

김민지·2022년 12월 10일
0

JPA

목록 보기
22/27

사용자정의쿼리하는 방법

  • 쿼리메서드(메서드의 이름이 쿼리의 구문으로 처리되는)
  • @Query
  • @NamedQuery
    -> 아래의 두가지방법은 거의 같다. 애플리케이션 로딩시점에 문법 체크한다.

entity와 dto를 구분해야하는이유

  1. 관심사의 분리
  • entity라는것은 테이블과 매핑되는 클래스이다. 데이터를 보여주기 위한 클래스가 아니다.
    데이터를 전달하기 위한 클래스인 dto를 사용해야한다.
  • dto는 자주 변경이 일어남.. 그리고 entity는 비즈니스로직과 긴밀하게 연결되어있음
    그래서 entity를 그냥 반환하거나 요청받는데 사용하게 되면 비즈니스로직쪽을 매번 수정해줘야될것임
  • api 스펙 파악을 dto만 보고도 대강 파악할 수 있다.
  • 필요없는 데이터까지 모든 데이터를 넘기게 되면 정보노출에 대한 문제가 생길 수 잇다

domain이란

  • 내가 개발하는 기능에 필요한 객체들을 도출해낸 것을 도메인
  • domain은 entity와 value로 구분할 수 있다. entity와 value의 차이는 id의 유무이다.

entity setter를 만들면 안되는 이유

  1. 사용자 의도를 파악하기 어렵다
  • 그냥 생성하기위해 값을 넣는것인지
  • 변경하는 것인지 의도를 파악하기가 어렵다

-> 의도를 알 수 있는 메서드를 작성해야한다
2. 일관성을 유지하기 어렵다

  • 변수를 private으로 선언하더라도 각 값마다 get함수와 set함수를 제공한다면 구현을 외부로 노출하는 셈이다.
    조회 함수와 설정함수로 변수를 다룬다고 클래스가 되지는 않는다.
    추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 클래스다.
profile
안녕하세요!

0개의 댓글