Hibernate 学习代码/笔记 (三)



Hibernate

Hibernate一级缓存
什么是一级缓存?
Hibernate创建每个Session对象时,都会给Session分配一块独立的缓存区,用于存放该Session查询出来的对象,
这个分配给Session的缓存区称之为一级缓存,也叫作session缓存

为什么使用一级缓存?
Session取数据时,会优先像向存区取数据,如果存在数据则直接返回,不存在才会去数据库中查询,从而降低数据库访问次数,
提高了代码运行效率.

如何使用一级缓存?
一级缓存是默认开启的,在使用Hibernate的API进行查询事会自动使用.

一级缓存规则?
一级缓存是Session独有的,每个Session不能访问其他的Session缓存区.
Session的save/update/delete/操作会触发缓存更新.

一级缓存管理?
session.evict(obj); 将obj从一级缓存中移除.
session.clear(); 清除一级缓存中的所有obj
session.close(); 关闭session,释放缓存空间




Hibernate中对象的状态
对象三种状态:
Hibernate中,可以把实体对象看成有三种状态:临时态/持久态/游离态

临时状态:
转换:
通过new创建的对象为临时态
通过delete方法操作的对象将转变为临时态
特征:
临时态的对象可以被垃圾回收.
临时态的对象未被持久化,未与session关联

持久状态:
转换:
通过get/load/list/iteratr方法查询到的对象为持久态.
通过save/update方法操作的对象转变为持久态
特征:
持久态对象垃圾回收器不能回收
持久态的对象进行了持久化,与session关联,实际上持久态对象存在于session缓存中,由session负责管理
持久态对象的数据可以自动更新到数据库中,时机是在调用session.flush()时执行,而提交事务时,也会调用session.flush(),
因此提交事务时也会触发同步,可以理解为ts.commit =  session.flush()+commit;

游离态:
转换:
通过session的evict/clear/close方法操作的对象会转变为游离态.
特征:
游离态的对象可以被垃圾回收
游离态的对象进行过持久化,但已被session解除了关联






延迟加载
什么是延迟加载?
在使用某些Hibernate方法查询数据库时,Hibernate返回的只是一个空对象(除id外 属性都为null),并没有真正查询数据库,
而在使用这个对象时,才会触发查询数据库.

为什么使用延迟加载?
可以提升内存资源的使用率
可以降低对数据库的访问次数

采用了延迟加载的方法
session.load();
query.iterate();
关联映射中 对关联属性的加载

使用延时加载需要注意的问题:
采用具有延时加载机制的操作,需要避免session被提前关闭,避免适用对象之前关闭session
解决方法:
1.采用非延时加载的查询方法,如query.get()/session.list();等
2.在使用对象之后再关闭session

Open session in view




关联映射
什么是关联映射?
若两张表具有关联关系,我们可以在实体对象和映射关系文件中配置这种关系,然后使用Hibernate操作其中一张表时,
他可以通过配置关系自动帮我们操作到另一张表,这种通过配置自动操作另一张表的手段称之为关联映射

关联映射的作用?
当我们操作一张表的时候,Hibernate可以通过关联映射自动帮助我们操作其关系表
这种关联操作包括:
关联查询出关系表的数据
关联新增/修改关系表的数据

关联删除关系表的数据


关联映射的类型:
一对多关联
多对一关联
多对多关联
一对一关联
继承关联












































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值