码迷,mamicode.com
首页 > 编程语言 > 详细

java面试(二)

时间:2017-12-04 17:37:48      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:常量   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  

  

java面试(二)

标签:常量   fetch   scroll   一个   db2   des   1.5   功能   进程   

原文地址:http://www.cnblogs.com/wjt-super/p/7977868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!