您的位置:首页 > 其它

hibernate初学9之级联操作与延迟加载

2017-08-06 13:06 357 查看
1.cascade级联操作

所谓cascade,如果有两个表,在更新一方的时候,可以根据对象之间的关联关系,去对被关联方进行相应的更新。比如说部门表和雇员表之间是一对多关系,使用cascade, 如删除部门表中的一条部门记录时,该部门下的所有雇员记录也自动删除。这种现象称为级联删除。当创建一个新的部门实例,该部门实例集合属性中保存有雇员。当该部门实例持久化时,自动将集合雇员也自动添加到数据库的雇员表中去。这称为级联增加。

1)all : 所有情况下均进行关联操作。

2)none:所有情况下均不进行关联操作。这是默认值。

3)save-update:在执行save/update/saveOrUpdate时进行关联操作。

4)delete:在执行delete时进行关联操作。

2.延迟加载

(1) 属性的延迟加载

在Hibernate3中,引入了一种新的特性—-属性的延迟加载,这个机制为获取高性能查询提供了有力的工具。如Person表有一个人员图片字段(对应java.sql.Clob类型)属于大数据对象,当我们加载该对象时,我们不得不每一次都要加载这个字段,而不论我们是否真的需要它,而且这种大数据对象的读取本身会带来很大的性能开销。我们可以如下配置我们的实体类的映射文件:

2)对方的延迟加载

当存在一对多关系时,例如读取部门表时在不需要立即加载该部门下的雇员时,可以设置延迟加载,只有通过部门对象.getemp()函数才可以真正的读取,可以这样设置延迟加载在部门表中

3.fetch:该属性指定Hibernate的抓取策略,该属性值只能是join(使用外连接抓取)和select(使用选择抓取)两个值的其中之一。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate