2021 11 01
2021-11-01¶
JPA 일급 컬렉션¶
- 참고 1: https://wbluke.tistory.com/23
- 참고 2: https://bgpark.tistory.com/156
- 참고 3: https://galid1.tistory.com/592
- 컬렉션 가공엔 일급 컬렉션!
- 긴밀한 관계가 있다면 양방향 매핑을 하게되는데,,, - 사실 양방향 매핑은 정말 필요한 곳 아니라면 하지마! - 관리 포인트가 늘어나고, 사실 단방향으로도 모든 관계 구현 가능하거든
- 엔티티의 컬렉션을 일급 컬렉션으로 포장하려면
@Embeddable을 사용하자! - 나는 엔티티에 속한 객체입니다~~!!! - 실제 하나의 객체이지만, DB의 테이블에서는 해당 객체 내부에 있는 필드들이 풀어져서 만들어짐 - 가독성이 올라감! 다음과 같이도 사용이 가능@Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; @Embedded private Address address } @Embeddable public class Address { private String zipCode; private String address1; private String address2; }@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Orders extends BaseEntity { @Embedded private OrderDetails orderDetails = new OrderDetails(); } @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) @Embeddable public class OrderDetails { @OneToMany(mappedBy = "orders", cascade = CascadeType.PERSIST, orphanRemoval = true) private List<OrderDetail> details = new ArrayList<>(); }