Hibernate的关联映射--一对多、
这是我
1 单向一对多:
实体类:(课程类)Grade与(学生类)Student的一对多关系
学生类:
public class Student implements java.io.Serializable {// Fieldsprivate Long id;private String name;private Integer age;private Long gradeId;//省略set、get方法
}
bhm.xml:
<hibernate-mapping><class name="com.zx.model.Student" table="student" catalog="hibernate"><id name="id" type="java.lang.Long"><column name="id" /><generator class="native" /></id><property name="name" type="java.lang.String"><column name="name" length="50" /></property><property name="age" type="java.lang.Integer"><column name="age" /></property><property name="gradeId" type="java.lang.Long"><column name="grade_id" /></property></class>
</hibernate-mapping>
课程类:
public class Grade implements java.io.Serializable {// Fieldsprivate Long id;private String name;
}
xml
<hibernate-mapping><class name="com.zx.model.Grade" table="grade" catalog="hibernate"><id name="id" type="java.lang.Long"><column name="id" /><generator class="native" /></id><property name="name" type="java.lang.String"><column name="name" length="50" /></property><!-- 配置与student一对多的关系--><set name="students" inverse="true" cascade="delete"> <key column="grade_id" /> <one-to-many class="com.zx.model.Student"/> </set> </class>
</hibernate-mapping>
测试findById():
public static void main(String[] args) {GradeDAO gradeDAO = new GradeDAO();Grade grade = new Grade();grade.setId(1L);Grade grade2 = gradeDAO.findById(1L); for (Student stu : grade2.getStudents()) {log.debug(stu.getName());}}
关联查询不管inverse、cascade为何值时,都会查询到课程对应得学生集合。插入时只插入一张表,不会级联。
2 双向关联映射
在两个关联实体中,同时配置了两种关联关系,这是这两个实体间就形成了双向关联映射,查询数据时互不影响,但是插入、更新、删除数据就会产生级联更新的问题。一班来说关系的维护交给多的一方维护,那么就需要在“一”的一方的配置文件中,加入invers=”true”的设置。
Student:
<hibernate-mapping><class name="com.zx.model.Student" table="student" catalog="hibernate">....<!-- <property name="gradeId" type="java.lang.Long"><column name="grade_id" /></property> --><!-- 配置双向关联 --><many-to-one name="grade"><column name="grade_id"></column></many-to-one></class>
</hibernate-mapping>
Grade:
<hibernate-mapping><class name="com.zx.model.Grade" table="grade" catalog="hibernate">...<!-- 配置与student一对多的关系, **维护关系交给多的一方维护** --><set name="students" inverse="true" cascade="all"> <key column="grade_id" /> <one-to-many class="com.zx.model.Student"/> </set> </class>
</hibernate-mapping>
Hibernate的关联映射--一对多、相关推荐
- (转)Hibernate关联映射——一对多(多对一)
http://blog.csdn.net/yerenyuan_pku/article/details/70152173 Hibernate关联映射--一对多(多对一) 我们以客户(Customer)与 ...
- 关联映射 一对多 实验心得_使用影响映射来帮助您的团队进行实验
关联映射 一对多 实验心得 影响映射是一种在领导者和项目团队之间建立共识的技术. 影响图以引人入胜的研讨会形式提供,是以鼓励创新的方式启动工作流的理想方式. Gojko Adzic首次在2011年的小 ...
- 初识Hibernate之关联映射(一)
上篇文章我们对持久化对象进行的学习,了解了它的三种不同的状态并通过它完成对数据库的映射操作.但这都是基于单张表的操作,如果两张或者两张以上的表之间存在某种关联,我们又该如何利用持久化对象进行操作呢?本 ...
- 8 Hibernate:关联映射(Associations)
Hibernate 关联映射(Associations)分为: 8.1 Hibernate:一对一关联映射 8.1.1 Hibernate:一对一单向关联(unidirectional) ...
- chapter6 Hibernate的关联映射
回顾 · 下面这个异常是怎么回事?该怎么解决? org.hibernate.MappingException: Unknownentity: com.aptech.jb.entity ...
- Hibernate一对一关联映射配置
一对一关联 Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射.下面以员工账号和员工档案表为例,介绍这两种映射方式,并使用这两种映射方式分别完成以下持久化操作: (1)保 ...
- Hibernate之关联映射
在现实生活中 ,很少有对象是孤立存在的,例如老师,往往和被授课的学生存在关联关系,如果得到了某个老师实例,那么我们就可以直接获取该老师 对应的全部学生.同样,我们得到了一个学生实例 ,我们也可以获取 ...
- Hibernate(九)一对多双向关联映射
上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关 内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映 射,即在 ...
- Hibernate映射详解(二)--多对一,一对多单向,一对多双向关联映射
在我们以前的数据库设计中,设计表就不是一件轻松的事情.多种事物之间往往都是有这样那样的关系的.那怎样设计表格,才能既将事情描述明白,又能使数据库设计的比较合理呢?那里我们提供了好多规范,好多约束来满足 ...
最新文章
- 视觉导航的神经拓扑SLAM
- 关于Mysql5.6半同步主从复制的开启方法【转】
- 2016总结 - 我的转型之路
- 小心robots.txt影响蜘蛛的爬行
- 【MySQL】sysbench压测服务器及结果解读
- c语言左移15位,关于c语言中左移右移运算符的问题
- oracle表格颜色,如何在oracle中使用光标更新特定颜色
- 大数据解密之你的同事都跳槽到了哪些公司
- svn服务器地址更改
- 在Struts 2中使用JSON Ajax
- Java入门视频教程
- 概要设计模板 外部接口设计_0226 rest接口设计
- win10计算机内存,win10多大内存够用 win10系统需要多大的运行内存
- Oracle system identifier already exists specify another SID
- 教你一招永久去除WPS广告
- 二叉树非递归遍历的一点理解
- 个人博客园样式、背景及细节美化过程
- 给iframe添加loading状态
- DDoS攻击的原理是什么
- 应届生应聘java需要掌握的技能