728x90
반응형
이전 실습에 연관관계를 구성해보자.
테이블 및 엔티티 설계
실습
연관관계를 갖는 엔티티
- Member.java
@Entity
public class Member {
@Id @GeneratedValue
@Column(name = "MEMBER_ID")
private Long id;
private String name;
private String city;
private String street;
private String zipcode;
// 양방향 연관관계 (Member <-> Order)
@OneToMany(mappedBy = "member") // 조회만 가능
private List<Order> orders = new ArrayList<>();
// getter, setter
}
- Order.java
@Entity
@Table(name = "ORDERS")
public class Order {
@Id @GeneratedValue
@Column(name = "ORDER_ID")
private Long id;
// Member와 연관관계 생성, 다대일
@ManyToOne
@JoinColumn(name = "MEMBER_ID")
private Member member;
private LocalDateTime orderDate;
@Enumerated(EnumType.STRING)
private OrderStatus status;
// 양방향 연관관계 (Order <-> OrderItem)
@OneToMany(mappedBy = "order")
private List<OrderItem> orderItems = new ArrayList<>();
// 연관관계 편의 메소드 (Order <-> OrderItem)
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
orderItem.setOrder(this);
}
// getter, setter
}
- OrderItem.java
@Entity
public class OrderItem {
@Id @GeneratedValue
@Column(name = "ORDER_ITEM_ID")
private Long id;
// Order와 연관관계 생성, 다대일
@ManyToOne
@JoinColumn(name = "ORDER_ID")
private Order order;
// Item과 연관관계 생성, 다대일
@ManyToOne
@JoinColumn(name = "ITEM_ID")
private Item item;
private int orderPrice;
private int count;
// getter, setter
}
- Item.java
는 이전 실습과 동일
Main
- JpaMain.java
public class JpaMain
{
public static void main( String[] args )
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
try {
Order order = new Order();
// 1. 연관관계 편의 메소드 이용
// order.addOrderItem(new OrderItem());
em.persist(order);
// 2. 양방향 연관관계 이용
OrderItem orderItem = new OrderItem();
orderItem.setOrder(order);
em.persist(orderItem);
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
emf.close();
}
}
양방향 연관관계 관련
- 양방향 연관관계가 아니어도 애플리케이션 개발에 문제 없다.
- 편의를 위해 양방향 연관관계(조회)를 만드는 것이다.
- 실무에서 JPQL을 복잡하게 사용하기 때문에 편하게 작성하기 위해 양방향 연관관계를 사용한다.
- 비지니스 로직 상 필요할 경우에만 양방향 연관관계를 사용하는 것이 좋다.
728x90
반응형
'Dev > JPA' 카테고리의 다른 글
[JPA] 실습 - 다양한 연관관계 매핑 (0) | 2021.08.23 |
---|---|
[JPA] 다양한 연관관계 매핑 (0) | 2021.08.23 |
[JPA] 연관관계 매핑 기초 (0) | 2021.08.12 |
[JPA] 실습 - 요구사항 분석과 기본 매핑 (0) | 2021.08.03 |
[JPA] 엔티티 매핑 (0) | 2021.08.02 |
댓글