Order Entity
@Entity
@Table(name="orders")
@Getter @Setter
public class Order{
@Id @GeneratedValue
@Column(name="order_id")
private Long id;
private LocalDateTime orderDate;
@OneToMany(mappedBy="order",cascade=CascadeType.ALL)
private List<OrderItem> orderItems=new ArrayList<>();
public addOrderItem(OrderItem orderItem){
orderItems.add(orderItem);
orderItem.setOrder(this);
}
}
OrderItem Entity
@Entity
@Getter @Setter
public class OrderItem{
@Id @GeneratedValue
@Column(name="orderitem_id")
private Long id;
private Integer price;
private Integer quantity;
@ManyToOne(fetchType.LAZY)
private Order order;
public OrderItem(Integer price,Integer quantity){
this.price=price;
this.quantity=quantity;
}
}
이와 같은 코드가 있다고 생각하고 진행하겠습니다!
실행 해 볼 코드
// Entitty Manager Factory 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
//EntityManager 생성
EntityManager em = emf.createEntityManager();
//Transaction 생성
EntityTransaction tx = em.getTransaction();
tx.begin();
Order order=new Order();
order.setOrderDate(LocalDateTime.now());
OrderItem orderItem=new OrderItem(1000,20);
order.addOrderItem(orderItem);
//order Entity를 영속 시킴으로서 orderItem도 같이 영속상태가 되는 것임.
em.persist(order);
tx.commit();
//커밋하는 순간 Insert문을 한번에 보냄
부모 Entity와 연관관계가 끊어진 자식 Entity를 말함
자식 Entity는 부모에 따라 생명주기가 관리 될 수 있음.
부모가 영속할 때는 같이 영속, 제거될 때는 같이 제거 되기 때문!
이 글은 인프런 김영한님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'을 수강하고 작성합니다.
출처:https://www.inflearn.com/course/ORM-JPA-Basic