Hibernate的关联映射--一对多、
这是我
1 单向一对多:
实体类:(课程类)Grade与(学生类)Student的一对多关系
学生类:
public class Student implements java.io.Serializable {
// Fields
private 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 {
// Fields
private 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之关联映射(一对多和多对一映射,多对多映射)
~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习以下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...
- (转)Hibernate关联映射——一对多(多对一)
http://blog.csdn.net/yerenyuan_pku/article/details/70152173 Hibernate关联映射——一对多(多对一) 我们以客户(Customer)与 ...
- Hibernate注解----关联映射注解以及课程总结详解----图片版本
上一篇,记录了Hibernate注解----类级别注解以及属性注解详解 ,我们这一节主要讲解的是Hibernate注解----关联映射注解以及课程总结详解. 本节的主要内容: 第3章 关联映射注解 3 ...
- 初识Hibernate之关联映射(二)
上篇我们介绍了关联映射的几种形式,有单向多对一,单向一对多,还有双向一对多.本篇接着介绍有关关联映射的其他几种映射方式,主要有以下几种: 基于外键的单向一对一关联映射 基于主键的单向一对一关联映射 单 ...
- Hibernate之关联关系映射(一对多和多对一映射,多对多映射)
~~~接着之前的Hibernate框架接着学习(上篇面试过后发现真的需要学习一下框架了,不然又被忽悠让去培训.)~~~ 1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1: ...
- Hibernate的关联映射——双向1-N关联
Hibernate的关联映射--双向1-N关联 对于1-N的关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而是用N的一端控制关联关系.双线的1-N关联和N-1关联是两种相同 ...
- Hibernate的关联映射——单向1-N关联
Hibernate的关联映射--单向1-N关联 单向1-N关联的持久化类里需要使用集合属性.因为1的一端需要访问N的一端,而N的一端将以集合(Set)形式表现.从这个意义上来看,1-N(实际上还包括N ...
- Hibernate的关联映射——单向1-1关联
Hibernate的关联映射--单向1-1关联 对于单向的1-1关联关系,需要在持久化类里增加代表关联实体的成员变量,并为该成员变量添加setter方法和getter方法.从持久化类的代码上看,单向1 ...
- Hibernate的关联映射——单向N-1关联
Hibernate的关联映射--单向N-1关联 N-1是非常常见的关联关系,最常见的父子关系也是N-1关联,单向的N-1关联只需从N的一端可以访问1的一端. 为了让两个持久化类能够支持这种关联映射,程 ...
随机推荐
- <每日 1 OJ> -24. The Simple Problem
题目描述 Solo上了大学,对数学很感兴趣,有一天他面对数分三,一个Sequence(数列)摆在了他面前,这可难住他了……序列如下:S(a,k,n)=a+(k+a)+(2k+a)+…+(nk+a),题 ...
- Logback的基本使用方法
一.Logback简介 Logback是由log4j创始人设计的又一个开源日志组件. 1.logback当前分成三个模块:logback-core,logback- classic和logback-a ...
- ==和Equal()
1.a==null与 null==a null放在前面就是为了避免变量为空时 引了空指针异常 如: if(a==null) 如果a 真为空时,现在就相当用调用了变量a的方法,a 都为空了还调用他的方法 ...
- Hyper-V中安装CentOS7设置静态ip并且可以连接外网
https://blog.csdn.net/xj19940904/article/details/89165002 https://blog.csdn.net/u011598235/article/d ...
- 微信小程序图片宽度100%,高度自适应
实现图片自适应,按照一般情况只需设置: img { width: 100%; height: auto; } 但是微信小程序里是特例,需要image标签上设置属性mode=widthFix,就是hei ...
- 微信小程序诡异错误this.setData报错
先说原因: function声明的函数和箭头函数的作用域不同,这是一个不小心坑的地方.可参考箭头函数说明:https://developer.mozilla.org/en-US/docs/Web/Ja ...
- vue-devtools 获取到 vuex store 和 Vue 实例的?
vue-devtools 获取到 vuex store 和 Vue 实例的? https://github.com/vuejs/vue-devtools 安装了 vue-devTools ...
- Oracle 如何恢复删除并提交的表数据
在Oracle的数据库中,如果不小心删除数据,该如何恢复数据呢? 有两种方法 :scn 方法和时间戳方法 一.恢复删除数据的SQL语法(建议用时间戳) 1.通过scn恢复删除且已提交的数据 1)获得当 ...
- promise 和 async await比较
async搭配await是ES7提出的,它的实现是基于Promise.这里使用它对比Promise的用法,这里只是简单的适合日常业务的使用场景. async.await是ES7中的提案,通过同步方 ...
- C#Selenium常用语法功能 很好的文章,值得参考收藏
https://blog.csdn.net/a1003434346/article/details/80257946 https://www.jianshu.com/p/310623afcde1 h ...