Hibernate 启用二级缓存

来源:互联网 发布:java如何记录日志 编辑:程序博客网 时间:2024/05/13 06:30

Hibernate中,启用二级缓存:

 二级缓存的组件配置

1
. 引用第三方缓存组件(ehcache)

引用jar包:ehcache-1.2.3.jar
缓存配置文件:ehcache.xml

2
. 启用二级缓存

<!-- 启用二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">true</property>

3 设置被缓存的类

<!-- 设置缓存的类(被缓存的对象) -->
<class-cache usage="read-only" class="com.bjpowernode.hibernate.pojo.User"/>

4 让框架能够识别ehcache缓存组件

<!-- 让框架识别ehCache组件 -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
.

public static void main(String[] args) throws Exception {Session session = null;try {session = HibernateUtil.getSession();HibernateUtil.beginTransaction(session);/*第一次查询时,将查询结果放置到一级缓存中,如果开启了二级缓存,也会放到二级缓存中*/User user = (User)session.load(User.class, 1);System.out.println(user.getId() + " -- " + user.getName());HibernateUtil.commitTransaction(session);} catch (Exception e) {e.printStackTrace();HibernateUtil.rollbackTransaction(session);throw e;} finally {HibernateUtil.closeTransaction(session);}try {/*新的sessiion对象,session缓存中无任何数据*/session = HibernateUtil.getSession();HibernateUtil.beginTransaction(session);/*再次查询相同数据时,先判断一级缓存中是否有数据,如果有就直接获取 * 如果一级缓存中没有数据,会判断是否开启了二级缓存,在查找二级缓存 * *//*将查询结果放置到1 2 级缓存中*/User user = (User)session.load(User.class, 1);System.out.println(user.getId() + " -- " + user.getName());HibernateUtil.commitTransaction(session);} catch (Exception e) {e.printStackTrace();HibernateUtil.rollbackTransaction(session);throw e;} finally {HibernateUtil.closeTransaction(session);}}
这样,在运行时,第二次查询就不会像数据库发送查询语句了

0 0
原创粉丝点击