一对多关联映射利用了多对一关联映射的原理。
多对一关联映射:在多的一端加入一个外键指向一的一端,但是维护的关系是多指向一的一端。
一对多关联映射:在多的一端加入一个外键指向一的一端,但是维护的关系是一指向多的一端。
两者映射策略是一样的,只是站的角度不同。
Hibernate一对多映射(class--àstudent单向):
一般用set集合,set里面的内容不可重复。也可以用别的集合。
在一的一端维护关系的缺点:
*如果在t_student中的classId设置为非空not null,则无法保存。
*因为不是在student一端维护关系,student不知道是哪个班的,所以会发出多余的update语句来更新关系。
通常会做成双向的,在多的一端维护关系。
Student.hbm.xml
<hibernate-mapping>
<class
name="com.bjsxt.hibernate.Student" table="t_student">
<id
name="id">
<generator
class="native"/>
</id>
<property
name="name"/>
</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"/>
<set name="students">
<key
column="classesid"/>
<one-to-many
class="Student"/>
</set>
</class>
</hibernate-mapping>
存储:必须先存学生,否则报错。
session.beginTransaction();
Student student1 =
new Student();
student1.setName("10");
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("尚学堂");
classes.setStudents(students);
//可以正确保存
session.save(classes);
session.getTransaction().commit();
加载:
session.beginTransaction();
Classes classes =
(Classes)session.load(Classes.class, 1);
System.out.println("classes.name="
+ classes.getName());
Set students =
classes.getStudents();
for (Iterator
iter=students.iterator(); iter.hasNext();) {
Student
student = (Student)iter.next();
System.out.println("student.name="
+ student.getName());
}
session.getTransaction().commit();
- 大小: 19.3 KB
- 大小: 25.1 KB
分享到:
相关推荐
hibernate one-to-one 一对一唯一外键关联映射_单向 and 双向
NULL 博文链接:https://xiangtui.iteye.com/blog/680938
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多的一端来维护关联关系。 加上inverse="true"这个属性,就可以强制在多的一端维护关系了。
NULL 博文链接:https://zhouxianglh.iteye.com/blog/569471
020 <one-to-one>、<many-to-one>单端关联上的 lazy(懒加载)属性 021 继承关联映射 022 component(组件)关联映射 023 复合主键 关联映射 024 其它 关联映射 025 hibernate 悲观锁、乐观锁 026 hibernate 操作树形...
Hibernate应用例子many-to-many
深入理解hibernate many-to-one(多对一)及 cascade(级联).
hibernate单向一对多关联映射(注解版)
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
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1171227
本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。
Hibernate 一对多关联映射的测试,主要使用部门与员工的级联关系进行添加测试.
Hibernate双向一对一关联映射(注解版)
hibernate many-to-many级联保存,级联更新,级联删除
Hibernate-one-to-many
Hibernate学习:单向多对一关联 工程
这里包含了hibernate多对一单向关联关系实现源码,希望对你有用。