Hibernate ontomany示例

Hibernate ontomany示例

 

一对多关联映射利用了多对一关联映射原理

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

在一一端维护关系的缺点:
 * 如果将t_student表里的classesid字段设置为非空,则无法保存
 * 因为不是在student这一端维护关系,所以student不知道是哪个班的,
   所以需要发出多余的update语句来更新关系

Classes----->Student(一对多单向关联)

 

1.实体类(Classes、Student)、hibernate配置文件略。

2.实体类映射成数据库表略,请参见自动生成数据库表。

3.编写一对多关联映射文件:

 

Classes.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 "
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.lwp.hibernate">
 <class name="Classes" table="t_classes">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="name"/>
  
<set name="students">
    <key column="classesid"></key>
    <one-to-many class="Student"/>
  </set>
 </class>
</hibernate-mapping>

 

 

 

 

insert数据:

 

public void testSave() {
  Session session = null;
  try {
   session = HibernateUtils.getSession();
   session.beginTransaction();
   
   Student student1 = new Student();
   student1.setName("王大虎");
   session.save(student1);
   
   Student student2 = new Student();
   student2.setName("王二虎");
   session.save(student2);
   
   Set students = new HashSet();
   students.add(student1);
   students.add(student2);
   
   Classes classes = new Classes();
   classes.setName("信息605班");
   classes.setStudents(students);
   
   session.save(classes);
   
   session.getTransaction().commit();
  }catch(Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  }finally {
   HibernateUtils.closeSession(session);
  }
 } 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值