Java/JPA

    [JPA] 패턴, 준영속 엔티티

    📄 도메인 모델 패턴 엔티티 안에 비즈니스 로직이 포함된 패턴 객체지향을 활용하는 기법 📄 트랜잭션 스크립트 패턴 서비스 계층에서 모든 비즈니스 로직을 처리하는 패턴 [디자인패턴] Domain Model Pattern vs Transaction Script Pattern Domain Model Pattern [도메인 모델 패턴]이란? 대부분의 비즈니스 로직이 엔티티 안에 구성되어있습니다. 서비스 계층은 엔티티에 필요한 역할을 위임하는 역할을 합니다. 엔티티 안에 비즈니스 로직 applepick.tistory.com 📄 준영속 엔티티 영속성 컨텍스트가 더 이상 관리하지 않는 엔티티 임의로 만든 엔티티도 식별자를 갖고 있다면 준영속 엔티티로 볼 수 있다. 준영속 엔티티를 수정하는 방법 1. 영속 엔티티를 가..

    [JPA] 엔티티 설계시 주의점

    📄 값 타입은 변경 불가능하게 설계한다. @Embeddable @Getter @AllArgsConstructor public class Address { private String city; private String street; private String zipcode; protected Address() { } } Setter를 제거해 변경 불가능하게 만든다. JPA 스펙상 임베디드 타입은 public 또는 protected인 빈 생성자가 필요하다. 그나마 안전한 protected 제어자를 사용한다. 📄 가급적 Setter를 사용하지 않는다. Setter를 사용하면 변경 포인트가 많아 유지보수가 어려워진다. 📄 모든 연관관계는 지연 로딩으로 설정한다. 즉시 로딩 FetchType.EAGER는 예측과..