hihernate一对多关联映射(双向Classes<----->Student)
一对多双向关联映射:
* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端
* 在多一端采用<many-to-one>
注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多
的一端来维护关联关系
关于inverse属性:
inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上,
默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,
如果设置成inverse为true,则我们只能从多一端来维护关联关系
注意:inverse属性,只影响数据的存储,也就是持久化
inverse和cascade
* inverse是关联关系的控制方向
* cascade操作上的连锁反应
映射关系:
Student.hbm.xml:
<hibernate-mapping>
<class
name="com.bjsxt.hibernate.Student" table="t_student">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="name"/>
<many-to-one
name="classes" column="classesid"/>
</class>
</hibernate-mapping>
Classes.hbm.xml:
<hibernate-mapping
package="com.bjsxt.hibernate">
<class
name="Classes" table="t_classes">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="name"/>
//默认inverse = false;反转,true时表示一的一端维护关系失效。反转到多的一端维护关系。不会发出updae语句。
<set name="students" inverse="true"
cascade="all">
<key
column="classesid"/>
<one-to-many
class="Student"/>
</set>
</class>
</hibernate-mapping>
Inverse
= true,cascade = all 保存:
session.beginTransaction();
Classes classes =
new Classes();
classes.setName("尚学堂");
Student student1 =
new Student();
student1.setName("10");
student1.setClasses(classes);
Student student2 =
new Student();
student2.setName("祖儿");
student2.setClasses(classes);
Set students = new
HashSet();
students.add(student1);
students.add(student2);
classes.setStudents(students);
//保存时会反转到student一端,由于cascade = all,会先把class保存,再保存student。
session.save(classes);
session.getTransaction().commit();
常用保存方法:在多的一端维护关系
session.beginTransaction();
Classes classes =
new Classes();
classes.setName("尚学堂");
session.save(classes);
Student student1 =
new Student();
student1.setName("10");
student1.setClasses(classes);
session.save(student1);
Student student2 =
new Student();
student2.setName("祖儿");
student2.setClasses(classes);
session.save(student2);
session.getTransaction().commit();
- 大小: 25.6 KB
分享到:
相关推荐
hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多的一端来维护关联关系。 加上inverse="true"这个属性,就可以强制在多的一端维护关系了。
NULL 博文链接:https://xiangtui.iteye.com/blog/680938
Hibernate双向一对一关联映射(注解版)
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
NULL 博文链接:https://zhouxianglh.iteye.com/blog/569471
hibernate双向一对多关联映射(注解版)
Hibernate应用例子many-to-many
020 <one-to-one>、<many-to-one>单端关联上的 lazy(懒加载)属性 021 继承关联映射 022 component(组件)关联映射 023 复合主键 关联映射 024 其它 关联映射 025 hibernate 悲观锁、乐观锁 026 hibernate 操作树形...
深入理解hibernate many-to-one(多对一)及 cascade(级联).
hibernate双向一对多关联映射(XML)
hibernate多对一关联映射(Hibernate_Many2One) 7 hibernate一对一主键关联映射(单向关联Person---->IdCard) 8 hibernate一对一主键关联映射(双向关联Person<---->IdCard) 9 hibernate一对一唯一外键关联映射...
Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向...Hibernate 一对多外键双向关联 Hibernate 一对多连接表双向关联 Hibernate 多对多双向关联
免费为大家服务 Hibernate one-to-many-annotation
多对多双向关联 <br>注意映射规则: <set name="roles" table="t_user_role"><br> <key column="userid"/><br> <many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/><br> </set><br><br>table...
本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。
Hibernate 一对多关联映射的测试,主要使用部门与员工的级联关系进行添加测试.
NULL 博文链接:https://yinxiaoyong.iteye.com/blog/426752
hibernate双向多对多关联映射(注解版)
NULL 博文链接:https://dreamzhong.iteye.com/blog/1200915