Hibernata一对多关系映射

来源:互联网 发布:协同过滤算法的缺点 编辑:程序博客网 时间:2024/05/17 08:28

众所周知Hibernate是一个很好ORM开源项目,怀着谦虚的心态学习此框架,记录一下学习的过程

many2one;

定义两个实体:Customer和Order

public class Customer{

private Long id;
private String name;

//省略get/set

}

//Orders是多,Customer是一
//多订单对应一个客户

public class Order{

private Long id;
private String sn;
private Customer customer;

//省略set/get 

}

实体映射如下:

Customer.hbml.xml

<hibernate-mapping package="com.xier.many2one">
<class name="Customer" table="Customer">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>  
 

Order.hbm.xml

<hibernate-mapping package="com.xier.many2one">
<class name="Orders">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="sn"/>
<many-to-one name="customer" column="CUST_ID"/>
</class>
</hibernate-mapping>  

编写代码有一项不成文的规定,测试先行,好吧,就写测试吧:

public class many2ontTest {
private hibernateUtil util;//此处的hibernateUtil是自己封装的工具
public many2ontTest(){
this.util=hibernateUtil.getInstance();
}
@Test
public void save(){
Session session=util.getSession();


session.beginTransaction();
Customer c=new Customer();
c.setName("admin");

Orders o=new Orders();
o.setSn("sn");
o.setCustomer(c);
session.save(c);
session.save(o);


session.beginTransaction().commit();
session.close();
}
}

测试本程序通过后,得到如下表结构:

Orders


Customer结构如下:


本次记录到此结束。