如清晰度低,可转PC网页观看高清版本:
http://v.qq.com/x/page/r056899qkz7.html
做一些查询数据操作时,有一些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:查询缓存