Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ORM
- JUnit
- Data REST
- docker
- spring batch 코드
- batch
- spring camp
- spring-webmvc
- Spring
- spring bean
- 톰캣
- static inner class
- 코드 리뷰
- tomcat
- REST API
- spring jpa
- spring-webmvc #코드읽기
- spring pid
- Spring Data JPA
- spring boot
- Spring Data REST
- spring-mvc
- IntelliJ
- 세미나
- ApplicationPidFileWriter
- SuperTypeToken
- JPA mapping
- JPA
- spring boot tomcat
- Spring Batch
- Today
- 3
- Total
- 916,325
woniper
[JPA] @OneToMany / @ManyToOne, 1:N / N:1 관계 매핑 본문
- JPA란 무엇인가?
- JavaSE 환경에서 JPA 설정 및 CRUD
- JavaEE 환경(Spring)에서 JPA 설정 및 CRUD
- @OneToOne, 1:1 관계 매핑
- @OneToMany / @ManyToOne, 1:N / N:1 관계 매핑
- @ManyToMany, N:M 관계 매핑
- Entity 객체 생명주기(Lifecycle)와 Persistence Context
Table 관계도
Entity
@Entity(name = "tbl_user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer userId; private String username; private String nickName; private String address; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL) private List<Order> orders; // getter and setter public boolean addOrder(Order order) { if(orders == null) orders = new ArrayList<>(); return this.orders.add(order); } @Override public String toString() { return "User{" + "userId=" + userId + ", username='" + username + '\'' + ", nickName='" + nickName + '\'' + ", address='" + address + '\'' + ", orders=" + orders + '}'; } } @Entity(name = "tbl_order") public class Order { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer orderId; private String orderName; private String note; private int price; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "user_id") private User user; public Order() {} public Order(String orderName, String note, int price, User user) { this.orderName = orderName; this.note = note; this.price = price; this.user = user; } // getter and setter @Override public String toString() { return "Order{" + "orderId=" + orderId + ", orderName='" + orderName + '\'' + ", note='" + note + '}' + "\n"; } }
TEST
public class OneToManyAndManyToOneTest { @Autowired private EntityManagerFactory entityManagerFactory; private EntityManager entityManager; @Test public void oneToManyAndManyToOneTest() { Order order = new Order(); order.setOrderName("test order"); order.setPrice(123); order.setNote("test note"); User user = new User(); user.setUsername("lkw1989"); user.setNickName("woniper"); user.setAddress("seoul"); // relationship user.addOrder(order); order.setUser(user); entityManager.persist(user); Assert.assertEquals(user.getOrders().get(0).getOrderId(), order.getOrderId()); } @Before public void setUp() throws Exception { entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); } @After public void after() { entityManager.getTransaction().commit(); entityManager.close(); } }
'Framework' 카테고리의 다른 글
[JPA] Entity 객체 생명주기(Lifecycle)와 Persistence Context (4) | 2015.05.12 |
---|---|
[JPA] @ManyToMany, N:M 관계 매핑 (0) | 2015.05.12 |
[JPA] @OneToOne, 1:1 관계 매핑 (0) | 2015.05.12 |
[JPA] JavaEE 환경(Spring)에서 JPA 설정 및 CRUD (0) | 2015.05.02 |
[JPA] JavaSE 환경에서 JPA 설정 및 CRUD (2) | 2015.05.02 |
- Tag
- @ManyToOne, @OneToMany, JPA mapping
0 Comments