hibernate核心

					**hibernate实体三大状态,持久化状态与一级缓存,懒加载、急加载和一级缓存**

hibernate实体三大状态:
1、瞬间状态:只在内存中存在,与数据库无关
2、持久状态 :内存中存在,数据库中也存在
在修改持久状态的时候,不会去立即同步数据库,会先放入到一级缓存,当我们提交事务的时候 hibernate会把缓存与数据库同 步(一定要事务的支持才会同步因为它是发了一个update语句)
3、游离状态------>在内存中存在,在数据库中不一定存在

hibernate的缓存
1、默认支持一级缓存,一级缓存是session级别
2、可插拨式的缓存,二级缓存,二级缓存是sessionfactory 级别的缓存

懒加载在加载一个实体的时候,不会马上从数据库中加载,即从数据库中加载到内存。而急加载在加载一个实体时,会立即从数据库中查询,与其关联的类也会被同时查询。
急加载就会很快,因为在第一次加载的时候,已经帮我们全部加载好了。而懒加载则会相对慢一些,因为在我门需要查询的时候,它才会执行sql操作。
所以懒加载的优点是占用内存小,执行速度慢;急加载是执行速度快,占用内存高
          hibernate的get()he load()方法在执行的时候又很大的区别,
执行get()方法会把所有的基本数据全部加载,
而load()方法在懒加载中只会加载ID属性,所有的ID属性,其他的非ID属性的操作都不会执行,当我们需要查询默写具体的数据是才会真的执行sql操作,因为懒加载的有效期是在一个session中,所以今天我们在关闭了session的情况下会报错,因为Hibernate尝试通过当前session发sql查询,但发现session已经关闭,这样就会发出no session的异常 。
我们可以吧加载方式变成急加载或者不关闭session。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值