insert, update 모두 jpa repository에선 save()로 처리
내부적으로 jpa는 엔티티 객체들을 메모리상에 보관하려고 하기 때문에 특정 엔티티 객체의 존재를 확인하고자 select해서 있다면 update, 없다면 insert 실행된다.
앤티티 객체의 등록, 최종 수정 시간을 담당하는 BaseEntity클래스를 추상 클래스로 작성
여러 상황에 맞게(검색조건,조인,서브쿼리 등) 동적으로 쿼리를 생성할 수 있게한다.
=> 이를 위해 엔티티 클래스를 사용하는 것이 아닌 Q도메인을 이용해야한다.
Q도메인 작성에 Querydsl 라이브러리를 이용해 엔티티 클래스를 Q도메인 클래스로 변환하는 방식
--추가예정--
queryDsl관련
향로님 queryDsl
DTO: 레이어간 데이터 전달이 목적, 읽고 쓰기 허용 일회성을 성격이 강함
장점
dtoToEntity
EntityToDto
와 같이 변환하는 메서드를 어느 layer에 구현해야하는가 ?
책에서는 '앞서 작성된 코드를 변경하지 않기 위해서 service layer의 interface에 default 키워드로 구현'했다
객체 스스로가 책임을 갖는 것이 맞다고 생각했기 때문에 나는 각각의 클래스에 작성했다.
조회 서비스에서만 requestDTO,responseDTO가사용되기 때문에 책에선 해당 위치에 구현한 것 같다.
dto layer 위치_영한님 답변