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 |
댓글