标签:常量 fetch scroll 一个 db2 des 1.5 功能 进程
1、hibernate的二级缓存机制?
a、hibernate缓存作用是什么
hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对数据库访问的频次,从而体改应用程序的运行性能。缓存内的数据时对数据源中的数据复制,应用程序再运行时从缓存中读取数据,在特定的时刻或时间会同步缓存和物理数据源的数据。
b、hibernate数据缓存分类:一级缓存和二级缓存,其中一级缓存又称为session缓存,它是内置的,不能被卸载(意思就是这种缓存不具有可选性,是必须有的功能,不能取消session缓存)。由于session对象的声明周期通常对应一个数据库的事务或者一个应用事务,因此他的缓存是事务范围的缓存。在一级缓存中,持久化的每个实例都具有唯一的oid,hibernate二级缓存也称为sessionFactory缓存,由于sessionFactory对象的生命周期和应用个程序的整个过程对应,因此二级缓存是进程范围或者集群范围的缓存,有可能出现并发的问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别,二级缓存是可选的,是一个可配置的插件,在默认的情况下,sessionFactory是不会启用这个插件。
c、什么样的数据适合存到二级缓存中?
1、很少被修改的数据。
2、不是很重要的数据,允许出现偶尔的并发的数据
3、不会被并发访问的数据。
4、常量数据。
d、不适合放入二级缓存中的数据?
1、经常被修改的数据。
2、绝对允许出现并发访问的数据,如财务数据,绝对不允许出现并发。
3、与其他应用共享的数据。
e、hibernate查找对象如何应用缓存?
当hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查,查不到,如果配置了二级缓存,那么从二级缓存中查询,如果查不到,再去数据库中查询,如果结果按照ID放入到缓存、删除、更新、增加到数据的时候,同时更新缓存。hibernate管理缓存实例无论何时,当你给save,update或者saveOrUpdate方法传递一个对象时,或是使用load,get,list,iterate或scroll方法获取一个对象时,该对象都将被加入到session的内部不缓存中。当随后flush方法被调用时,对象的状态会和数据库取得同步。如果你不希望此同步操作发生,或者你正在处理大量对象,需要对有效管理内存时,米可以调用evict方法,从一级缓存中去掉这些对象及集合。
2、几种常见数据库取前十条数据的sql语句。
access:select top (10) * from table1 where 1=1
db2:select column from table where 1=1 fetch first 10 rows only
mysql:select * from table1 where 1=1 limit 10
sql server:
读取前10条:select top (10) * from table1 where 1=1
读取后10条:select top (10) * from table1 order by id desc
oracle:select * from table1 where rownum<=10
标签:常量 fetch scroll 一个 db2 des 1.5 功能 进程
原文地址:http://www.cnblogs.com/wjt-super/p/7977868.html