JPA之OneToMany和ManyToOne处理
前面介绍和总结了JPA的入门知识,也就是搭建环境和简单的使用了JPA的一个实例。现在再来总结下一些常见的关系(一对多和多对一的关系)。
在学习这些的时候,我们不得单单就学习他本身来学习,我们应该联系相关的一些知识来进行学习。比如Hibernate等
-------------------------------
例如我们用一个例子来开启JPA的一对多和多对一的学习。
比如你去当当网上买书籍,当当网就给你一个订单。
通过上面的业务活动描述你可以分析得出:一个订单可以包含一个或多个订单项.那么我们将将订单和订单项设计关系为(1:N)一对多的关系(排除0)。得出关系我们就使用JPA来实现这个关系(关于建立JPA和基本的配置我就不再说了,如果不明白请看JPA入门篇)。
首先建立订单实体类
import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import org.junit.BeforeClass;import org.junit.Test;import cn.itcast.bean.Order;import cn.itcast.bean.OrderItem;public class OneToManyTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}@Test public void addOrder(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin(); // start transaction Order order = new Order(); order.setAmount(34f); order.setOrderid("00001"); //order中包含的OrderItem项OrderItem1,OrderItem2 OrderItem orderItem1 = new OrderItem(); orderItem1.setProductName("书"); orderItem1.setSellPrice(22f); order.addOrderItem(orderItem1); //add orderitem in order OrderItem orderItem2 = new OrderItem(); orderItem2.setProductName("篮球"); orderItem2.setSellPrice(100f); order.addOrderItem(orderItem2); em.persist(order); //persist order object em.getTransaction().commit(); //commit transaction em.close(); factory.close();}}