首页 > 编程知识 正文

hibernate缓存级别(hibernate一级缓存二级缓存)

时间:2023-05-05 16:57:27 阅读:71642 作者:3469

配置1 :

添加到hibernate.cfg.xml文件

org.hibernate.cache.ehcache provider

真的

配置2 :

在项目src文件下创建新的ehcache.xml文件。 内容如下

配置3 :

要缓存对象的类,必须在hbm文件中添加以下属性:

/p

' http://hibernate.SourceForge.net/hibernate-mapping-3.0.dtd '

table='cdb_forums '

配置4 :

要使用查询缓存,Query必须将cacheable设置为true,query.setCacheable(true )。

例如,如果在dao的父类中更改用于hql查询的方法,则:

//*

对hql语句执行查询

* @param sql

* @return

*/

Publiclistexecutequery{

列表列表=new ArrayList (;

session session=hibernatesessionfactory.currentsession (;

传输tx=null;

查询查询=session.create query (hql );

query.set cacheable (真;

try {

tx=session.beginTransaction (;

list=query.list (;

tx.commit (;

}catch(exceptionex ) {

ex.printStackTrace (;

hibernatesessionfactory.roll back传输(tx;

} finally {

hibernatesessionfactory.close session (;

}

返回列表;

}

实验结果:

补充信息:如果要缓存的对象是级联关系。 如果与他具有级联关系的对象具有属性,则在第一个get之后,该对象所在的对象地图中的所有对象都将存储在hibernate的辅助缓存中,并在第二个get时从辅助缓存中提取所有级联如果其中一个级联对象没有属性,则它不会存储在辅助缓存中,并且以后每次获取时都会执行sql以在数据库中搜索级联对象。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。