hibernate 之session学习

1.java对象在jvm的生命周期

通过new语句创建一个对象,jvm(虚拟机)会为对象分配一块内存空间,只要这个对象被引用变量引用,他就一直存在于内存当中,对象不被任何引用变量占用,它就结束生命周期,jvm垃圾回收站会在适当的时候回收它占用的内存

 对于以上代码,对象o2在第七行结束生命周期,因为o1被c占用,所以在第八行结束生命周期。

hibernate的缓存包括一级缓存SessionFactory和二级缓存session

一级缓存针对整个数据库,一个数据库对应一个sessionFactory,所以一般是单例模式,属于重量经。

二级缓存针对一个事务,事务结束,他的生命周期结束,轻量级。

session缓存的作用

1.减少访问数据库的次数,应用程序从缓存中读取持久化的速度显然比到数据库中查询要快得多,因此,session提高数据访问的性能。

2.当缓存中持久化对象之间存在循环关联关系时,session会保证不出现访问对象图的死循环,以及由死循环引起的jvm堆栈溢出异常。

3.保证数据库中的相关记录与缓存中相应对象保持同步。对象-关系映射文件建立了静态映射,而session则建立了动态映射。

 程序先把customer对象加载到缓存中,执行完修改name属性后,session缓存中customer与数据库name字段不一致了,session在清理缓存的时候,自动进行肝脏检查,然后发现不一致,就会去更新数据库中的name字段。

猜你喜欢

转载自www.cnblogs.com/hejj-bk/p/11833744.html