------------------------------------------------------
Hibernate与ehcache二级缓存技术
------------------------------------------------------
package com;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import db.HibernateSessionFactory;
import db.Person;
public class Common {
/**
* @param args
*/
public static void main(String[] args) {
Session s = HibernateSessionFactory.getSession();
Criteria c = s.createCriteria(Person.class);
c.setCacheable(true);// 这句必须要有
System.out.println("第一次读取");
List l = c.list();
System.out.println(l.size());
HibernateSessionFactory.closeSession();
s = HibernateSessionFactory.getSession();
c = s.createCriteria(Person.class);
c.setCacheable(true);// 这句必须要有
System.out.println("第二次读取");
l = c.list();
System.out.println(l.size());
HibernateSessionFactory.closeSession();
System.out.println("END");
}
}
------------------------------------------------------
Person.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="db.Person" table="person" catalog="e">
<cache usage="read-only"/>
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="45" not-null="true" />
</property>
</class>
</hibernate-mapping>
------------------------------------------------------
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<defaultCache maxElementsInMemory="10000" eternal="false"
overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="180"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />
</ehcache>
------------------------------------------------------
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/jbpmdb
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">local_mysql</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="show_sql">true</property>
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
<property name="cache.use_query_cache">true</property>
<mapping resource="db/Person.hbm.xml" />
</session-factory>
</hibernate-configuration>
------------------------------------------------------
打印信息:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
第一次读取
Hibernate: select this_.id as id0_0_, this_.name as name0_0_ from e.person this_
1
第二次读取
1
END
------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000" <!-- 缓存最大数目 -->
eternal="false" <!-- 缓存是否持久 -->
overflowToDisk="true" <!-- 是否保存到磁盘,当系统当机时-->
timeToIdleSeconds="300" <!-- 当缓存闲置n秒后销毁 -->
timeToLiveSeconds="180" <!-- 当缓存存活n秒后销毁-->
diskPersistent="false"
diskExpiryThreadIntervalSeconds= "120"/>
</ehcache>
------------------------------------------------------
分享到:
相关推荐
Hibernate+ehcache二级缓存技术 Hibernate+ehcache二级缓存技术
SSH三层架构MVC(struts1.3+spring2.x+hibernate3.2),Hibernate(ehcache)二级缓存技术,Spring 注解形式依赖注入,ehcache缓存 源代码,内有MySql anbyke.sql文件,方便创建数据库演示效果!
Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...
Ehcache是Hibernate常用的二级缓存解决方案,它可以提高应用程序的性能和响应速度。这篇博客文章“hibernate缓存ehcache用法”可能详细介绍了如何在Hibernate中配置和使用Ehcache。 首先,我们需要理解什么是缓存。...
- 第二级缓存:SessionFactory实例间的共享缓存,跨Session存储数据,提高多个并发请求的效率。 4. **缓存更新与失效** - 更新策略:当数据发生变化时,需要同步更新缓存,可以使用`@CacheEvict`注解实现缓存的...
- 在Hibernate配置文件(如`hibernate.cfg.xml`)中启用二级缓存并指定Ehcache为缓存提供者。 - 配置Ehcache的XML配置文件,定义缓存区域、大小、过期策略等。 - 在实体类或映射文件中启用缓存,并指定缓存策略。 4...
Spring3支持Hibernate的二级缓存,可以通过注解来启用或禁用缓存。例如,使用`@Cacheable`、`@CacheEvict`和`@CacheConfig`等注解,分别用于读取缓存、清除缓存和全局缓存配置。 4. **实体类缓存配置** 对于需要...
Hibernate二级缓存是一种提高应用程序性能的技术,它将数据存储在SessionFactory级别的缓存中,使得数据可以在不同的Session之间共享。这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当...
在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...
2. 配置Hibernate:在hibernate.cfg.xml文件中启用二级缓存,并指定使用Ehcache作为二级缓存提供者。 3. 配置实体类:在实体类上使用`@Cacheable`、`@Cache`等注解,声明该类及属性参与缓存。 4. 配置缓存策略:...
### Hibernate二级缓存技术详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与关系型数据库之间的交互。为了提高性能和减少数据库的访问频率,Hibernate 提供了一级缓存和二...
1. 引入二级缓存库:如 Ehcache 或 Infinispan。 2. 在 Hibernate 配置文件中启用二级缓存。 3. 在实体类上添加 `@Cacheable` 注解或者在映射文件中配置 `<cache>` 元素。 4. 配置实体类的缓存策略,例如使用 `@...
【标题】:“Hibernate二级缓存(Ehcache)” 【正文】: Hibernate是一个流行的Java对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作。然而,随着应用规模的扩大,性能优化变得至关重要,...
以下是关于Hibernate二级缓存与Ehcache的详细知识点: 1. **二级缓存的作用**:一级缓存是每个Session内部的缓存,用于存储Session内的对象,而二级缓存则是一个全局范围的缓存,它可以在多个Session之间共享,减少...
标题“Hibernate一级缓存和二级缓存”指的是Hibernate框架中的两种缓存机制,它们是提高数据访问性能的关键要素。一级缓存是Session级别的,而二级缓存是SessionFactory级别的,两者在数据库操作中起到了重要的作用...
- **配置Hibernate**:在hibernate.cfg.xml或对应的配置文件中,启用二级缓存并指定使用Ehcache。 - **实体类注解**:在需要缓存的实体类上添加`@Cacheable`、`@Cache`等注解,定义缓存行为。 - **SessionFactory...
为了提高应用程序的性能,Hibernate支持多种级别的缓存机制,其中最为常见的是二级缓存。此外,还有一些场景下会用到所谓的“三级缓存”,虽然这一术语在官方文档中并未明确提及,但在实际应用中通常指的是查询缓存...
Hibernate的缓存主要分为一级缓存和二级缓存。一级缓存,即内部缓存,与Session生命周期绑定,每个Session都有自己的内部缓存,用于存储在该Session中操作的对象。当通过Session查询数据时,首先会在一级缓存中查找...
3. **集成Ehcache与Hibernate**:在Hibernate中配置Ehcache作为二级缓存,可以将频繁查询的数据保存在内存中,避免重复的数据库调用。这涉及到修改Hibernate配置文件(如`hibernate.cfg.xml`),添加Ehcache的相关...