Hinernate关系维护
来源:互联网 发布:飞机杯推荐知乎 编辑:程序博客网 时间:2024/05/22 12:34
Hinernate关系维护
以员工(Employee)和部门(Department)为例说明:
上面的方法是添加员工操作,如果打印出sql语句会如下所示:
Hibernate: insert into Employee (name, depart_id) values (?, ?)
Hibernate: insert into Employee (name, depart_id) values (?, ?)
Hibernate: insert into Department (name) values (?)
Hibernate: update Employee set name=?, depart_id=? where id=?
Hibernate: update Employee set name=?, depart_id=? where id=?
Hibernate: update Employee set depart_id=? where id=?
Hibernate: update Employee set depart_id=? where id=?
分析以上sql语句可以呈现出Hibernate的操作流程:
第一步:先保存员工信息,这时候部门id为空
第二步:保存部门信息,这是产生了部门id,Hibernate中员工类(Employee)要维护与部门信息的关系
就要更新员工信息,也就有了下面这两行sql语句:
Hibernate: update Employee set name=?, depart_id=? where id=?
Hibernate: update Employee set name=?, depart_id=? where id=?
第三部:另外部门也要维护与员工之间的关系,于是就产生了下面的sql语句了
Hibernate: update Employee set depart_id=? where id=?
Hibernate: update Employee set depart_id=? where id=?
====================================解决方案===================================
有一种方式可以让它放弃对这种关系的维护,一般在一对多的关系中让一的一方放弃对这种关系的维护,
这样效率就会高一些
可以设置部门映射文件的员工属性映射的inverse属性,如下:
inverse属性的意思是:‘是否要放弃维护关联关系?’ 设置为:true,就是不维护这种关系
因此就不会产生一下sql语句:
Hibernate: update Employee set name=?, depart_id=? where id=?
Hibernate: update Employee set name=?, depart_id=? where id=?
就提高了程序运行的效率.
通过以上步骤就省掉了两条upda语句,但是还有两条语句,后两句是如何产生的呢?
就是我们先保存了员工信息,这时部门id是没有值的,保存部门后就会产生更新语句,
因此只要先保存了部门,再保存员工就不会产生这些更新语句,从而节约了性能。
另外还有注意:inverse标签只能在集合中的属性中使用,比如:set,list,array,map等,在其他类型中
是没有这个属性的
并且inverse在有序的集合中也是不能使用的,比如List和Array等;它会放弃维护这种
序列化的关系
- Hinernate关系维护
- hinernate细节
- Hinernate进行mysql数据库的逆向工程无法生成主外键关系
- hinernate 批量处理
- hinernate 批量删除
- hinernate二级缓存的小结
- Hinernate JPA整理
- Hinernate一对多(难点)
- Hinernate一对双向映射
- hinernate ddl 设置
- Hibernate中的级联和关系维护
- 级联和关系维护(Cascade 和Inverse)
- poj1182(维护并查集里更复杂的关系)
- poj1182 并查集+关系维护
- 初识Hibernate(三)之多表关系维护
- 初识Hibernate(三)之多表关系维护
- hinernate 注解配置timestamp类型
- Hinernate的入门浅了解
- 25889
- VB6.0中的窗口控制技巧(3)
- Iterator设计模式
- 如何开启Java的断言?
- od常用断点
- Hinernate关系维护
- VB的容错处理(完整)
- 不重复随即生成数字和排序
- 一步一步学习云计算:云的概念(一)
- Iterator模式
- Iterator模式
- 从Java类库看设计模式 (Composite,Strategy,Iterator)
- The Rose Studio
- 沉稳