데이터를 가지고 있는 쪽에 비즈니스 메서드가 있는 것이 좋다. 왜냐하면 응집력이 높아지기 때문이다.
생성로직을 변경할 때 setter를 사용하다보면 다양한 곳에서 값을 변경하게 되어 객체의 일관성이 떨어진다.
엔티티에서 setter를 사용하는 대신에 생성자를 통해 파라미터를 넘기는 것이 좋다.
그래서 protected OrderItem을 사용하면 방지할 수 있다.
Lombok 어노테이션을 사용하여 protected 생성자를 생성할 수 있다.

cascade (영속성 전이)
부모 엔티티가 영속화 될 때, 자식 엔티티도 같이 영속화 되고
부모 엔티티가 삭제 될 때, 자식 엔티티도 삭제가 되는 등
부모의 영속성 상태가 전이되는 것을 이야기한다.
도메인 모델 패턴 vs 트랜잭선 스크립트 패턴
도메인 모델 패턴:
엔티티에 핵심 비즈니스 로직이 존재하고 호출하는 것
단순히 엔티티에 필요한 요청 위임하는 역할, 객체 지향 특성을 적극 활용한다.
트랜잭선 스크립트 패턴:
엔티티에 비즈니스 로직이 거의 없고 서비스 계층에서 대부분 비즈니스 로직을 처리하는 것
동적 쿼리
동적 쿼리를 생성해줘야 할 때가 있다.
만약 파라미터가 사용되는 쿼리에서 파라미터가 조건으로 사용안되는 쿼리들이 있을 것이다.
그럴 경우에는 동적 쿼리를 사용해 능동적으로 대처해야한다.
동적 쿼리는 Querydsl로 사용해야한다.
Querydsl은 문법 오류를 잡아주고 생산성을 극대화 시키기 때문에 아주 좋은 프레임워크다.
동적 쿼리 내용은 추후에 다룰 것이다.
'백엔드 > 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발' 카테고리의 다른 글
실전! 스프링 부트와 JPA 활용1 - 웹 계층 개발 (0) | 2023.01.08 |
---|---|
실전! 스프링 부트와 JPA 활용1 - 회원 도메인 개발 (0) | 2023.01.03 |
실전! 스프링 부트와 JPA 활용1 - 도메인 분석 설계 (0) | 2022.12.27 |