碎片化 | 第四阶段-53-hibernate持久化session问题解决-视频

时间:2022-05-06
本文章向大家介绍碎片化 | 第四阶段-53-hibernate持久化session问题解决-视频,主要内容包括延迟加载、持久化、缓存(性能优化)、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

视频内容

如清晰度低,可转PC网页观看高清版本:

http://v.qq.com/x/page/h0568t95mz4.html

Hibernate特性

延迟加载

做一些查询数据操作时,有一些API方法具有延迟的机制,即:我们使用API去操作查询数据,此时并没有调用我们的sql语句,而是在使用对象的时候,才去调用sql加载数据

session.get方法//无延迟加载特性
query.list()//无延迟加载特性
session.load方法//具有延迟加载特性
query.iterate()//具有延迟加载特性

问题(并发业务):

我调用了sql语句,查询出数据,在赋值界面,.....no session

问题流程:请求->filter控制器->Action->DAO(关闭session)->result->jsp

解决:

1:将数据放到缓存

    请求->filter控制器->Action->DAO(关闭session)->result->jsp(缓存)

2:Spring中解决,可以通过拦截器、AOP等处理,通过opensessioninviewfilter组件(web.xml),可以处理session资源、集中处理

解决流程:
    请求->filter控制器->Action->DAO(不关session)->result->jsp->关闭session

持久化

1:临时状态(Transient)
    new xxx()
    可以被回收站进行回收,gc


2:持久状态(Persisten)

    get/load/find/exc
    不可以被回收站进行回收

3:游离状态(Detached)

    只能有持久化状态演变而来
    evict、close、clear
    可以被回收站进行回收

缓存(性能优化)

1:一级缓存(自动开启)

在我们使用对象的时候,查询操作,会自动将数据进行缓存,生命周期和session同步
第一次查询,是通过调用sql语句查询,第二次查询,就是从缓存中取值

2:二级缓存

3:查询缓存