스프링 심화 TIL
@ElementCollection
쫑글이
2024. 8. 8. 22:56
Order와 Product가 각각 다른 서버에서 실행되는 마이크로서비스 아키텍처에서는 직접적인 엔티티 연관 관계를 설정할 수 없으므로 Order 엔티티는 주문할 상품의 ID 리스트만 포함하고, 상품과의 연관 관계를 직접적으로 매핑하지 않는다.
@AllArgsConstructor
@NoArgsConstructor
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long order_id;
@ElementCollection
@CollectionTable(name = "order_product_ids", joinColumns = @JoinColumn(name = "order_id"))
@Column(name = "product_id")
private List<Long> productIds;
}
- @ElementCollection : JPA에서 컬렉션 타입의 값을 엔티티에 저장할 때 사용하는 어노테이션으로 주로 기본 타입(예: String, Integer)이나 @Embeddable 타입의 객체 컬렉션을 저장할 때 사용된다.
- @CollectionTable : 컬렉션의 데이터를 저장할 별도의 테이블을 지정한다. name 속성으로 테이블 이름을, joinColumns 속성으로 엔티티의 외래 키를 지정
- @Column : 컬렉션의 요소를 저장할 열의 이름 지정