hibernate 二级缓存配置 1.配置hbm.xml 在class节点下面添加 <cache usage="read-write"/>(读写) 或者 <cache usage="read-only"/>(只读) 如: <class name="com.hxy.portal.poststext.JforumPostsText" table="jforum_posts_text" catalog="jforum_bbs"> <cache usage="read-write"/> <id name="postId" type="java.lang.Integer"> <column name="post_id" /> <generator class="identity" /> </id> <property name="postText" type="java.lang.String"> <column name="post_text" length="65535" /> </property> ..... </class> 2.配置spring文件 //打开hibernate二级缓存 hibernate.cache.use_sencond_levl_cache=true //设置缓存加载类 hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider //设置查询缓存 hibernate.cache.use_query_cache=true 具体配置: <bean id="sf_id" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="hibernateProperties"> <value> <!-- 配置hibernate属性 如第一个方言等--> <!-- 1.hibernate.dialect Hibernate SQL方言 表示连接那种数据库 2.hibernate.query.substitutions 你可以使用hibernate.query.substitutions定义新的Hibernate查询短语。比如说: hibernate.query.substitutions true 1, false 0 这个配置意思是当你在Hibernate里面输入true的时候,Hibernate会转化为1插入数据库, 当你在Hibernate里面输入false的时候,Hibernate会转化为0插入数据库,后面的Y,N同理。 对于某些数据库,例如Oracle来说,没有boolean数据类型,就是采用1代表true,0代表false, 因此使用这个配置在Hibernate里面直接用true/false会非常直观。 hibernate.query.substitutions toLowercase=LOWER 这可以让你重新命名SQL的LOWER函数。 3.hibernate.jdbc.batch_size 一个非零值,会开启Hibernate使用JDBC2的批量更新功能取值. 建议值在 5 和 30之间。 4.hibernate.cache.provider_class 指定一个自定义的CacheProvider缓存提供者的类名.取值. classname.of.CacheProvider 5.hibernate.cache.provider_configuration_file_resource_path hibernate缓存文件路径 6.hibernate.cache.use_sencond_levl_cache打开hibernate二级缓存 7.update如果数据库中不存在表则生成,存在如果有增加自动增加,开发使用update,生产一般不设置 --> hibernate.hbm2ddl.auto hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect hibernate.query.substitutions=true 1, false 0 hibernate.jdbc.batch_size=20 hibernate.hbm2ddl.auto=update hibernate.show_sql=true hibernate.cache.use_sencond_levl_cache=true hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider hibernate.cache.use_query_cache=true </value> <!-- hibernate.cache.provider_configuration_file_resource_path 指定缓存文件路径和文件名 --> </property> <!-- hibernate配置文件所在地 便于spring加载hibernate配置文件 --> <property name="mappingDirectoryLocations"> <list> <value>classpath:/com/hxy/portal/hibernate</value> </list> </property> </bean> 3.编写ehcache.xml 配置文件 <ehcache> <!-- maxElementsInMemory="10000" 缓存中最大允许创建的对象数 --> <!-- eternal="false" 缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期 --> <!-- timeToIdleSeconds="120" 缓存数据钝化时间(设置对象在它过期之前的空闲时间) --> <!-- timeToLiveSeconds="120" 缓存数据的生存时间(设置对象在它过期之前的生存时间) --> <!-- overflowToDisk="true" 内存不足时,是否启用磁盘缓存 --> <diskStore path="c:\\ehcache\"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" /> </ehcache> 4.使用查询方法 /**** * 根据hql查询List */ public List findCacheListByHql(final String hql) { // TODO Auto-generated method stub return this.getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { // TODO Auto-generated method stub Query queryObject = session.createQuery(hql); //设置是否启用缓存 queryObject.setCacheable(true); if(getHibernateTemplate().getQueryCacheRegion() != null){ queryObject.setCacheRegion(getHibernateTemplate().getQueryCacheRegion()); } return queryObject.list(); } }); } 5.缓存仅仅对hql查询生效,如果使用sql更变数据库数据,缓存数据将不会修改,只用使用hql操作数据库才能同步修改缓存数据。
相关推荐
本文将详细探讨如何在Spring集成的Hibernate环境中配置二级缓存,以及其背后的原理和实践。 首先,我们需要了解什么是二级缓存。在Hibernate中,一级缓存是每个Session内部的缓存,它自动管理实体的状态,当一个...
下面我们将详细探讨如何为Spring集成的Hibernate配置二级缓存。 首先,我们需要了解Hibernate的二级缓存机制。一级缓存是每个Session内部的缓存,而二级缓存则是SessionFactory级别的,它可以被多个Session共享。二...
在Spring Boot项目中配置Redis作为Hibernate的二级缓存,我们需要以下步骤: 1. **添加依赖**: 首先,在`pom.xml`文件中添加Spring Boot的JPA、Hibernate和Redis相关依赖,如: ```xml <groupId>org.spring...
Ehcache是Hibernate的一个可选二级缓存插件,用于存储数据库查询结果,减少对数据库的直接访问。当相同的数据再次被请求时,可以从缓存中快速获取,提高系统响应速度。在不使用缓存的情况下,可以通过配置关闭。 5...
`caching`和`Hibernate+ehcache二级缓存配置 - 王贵伟 - JavaEye技术网站.files`、`spring中配置二级缓存.files`这些目录可能包含了相关配置文件和资源。 总的来说,Spring二级缓存通过集成EhCache,实现了跨会话的...
在本讲中,我们将深入探讨如何为Spring整合的Hibernate配置二级缓存。二级缓存是Hibernate框架中的一个重要特性,它可以显著提升数据访问性能,通过在应用程序级别存储对象,减少了对数据库的直接访问次数。理解并...
Hibernate支持多种数据库,如MySQL、Oracle、PostgreSQL等,并提供了丰富的API和配置选项。 二、Spring框架详解 Spring是一个全面的企业级应用开发框架,核心特性包括依赖注入、面向切面编程(AOP)以及一系列的...
下面将详细探讨如何在Hibernate中配置二级缓存,并简要介绍所谓的“三级缓存”。 #### 一、二级缓存配置 **1. 引入依赖库** 首先,需要确保项目中已经引入了相应的缓存实现库,如EhCache。在Maven项目的`pom.xml`...
Spring允许我们在配置中开启和配置二级缓存,以提高数据访问效率。 9. **异常处理** Spring将Hibernate的异常转换为Spring的`DataAccessException`系列异常,使得异常处理更加统一。 10. **测试与调试** 在集成...
- 在Hibernate配置中指定使用hibernate-memcached作为二级缓存。 - 如果单独使用Spring,需要配置Spring的缓存管理器,并关联xmemcache-spring的相关配置。 - 在需要缓存的方法上使用Spring的缓存注解。 8. **...
SSH(Struts2、Spring、Hibernate)是一种...通过部署到Tomcat服务器,初学者可以了解和学习如何在实际环境中配置和使用Hibernate二级缓存。这将是一个不错的实践项目,有助于理解SSH框架和Hibernate缓存的工作原理。
3. Spring Boot配置:在resources目录中创建hibernate.properties配置文件,设置相关属性,例如是否格式化SQL语句,以及是否启用二级缓存。 4. 实现二级缓存的策略:在Java代码中,需要正确地配置实体类和存储库...
6. **性能优化**:在大型项目中,可能需要考虑缓存策略(例如Hibernate的二级缓存)、数据懒加载等优化措施,以提高系统性能。 7. **安全控制**:Spring Security可以集成到JSF应用中,提供认证、授权等功能,保护...
- **性能优化**:考虑缓存策略,合理使用Hibernate的一级和二级缓存,避免不必要的数据库查询。 综上所述,Struts、Hibernate与Spring的整合,不仅能够充分发挥各自的优势,还能形成互补,共同构建出高性能、高可...
- **利用Spring提供的缓存管理机制**:Spring提供了对Hibernate一级缓存和二级缓存的支持,合理利用缓存可以显著提升应用性能。 - **性能调优**:通过对Hibernate配置参数进行调优,比如设置合理的缓存策略、调整...
- **缓存机制**:一级缓存(Session)和二级缓存(如EhCache)提高数据访问性能。 3. Spring框架: - **依赖注入**:Spring通过容器管理组件的依赖关系,使代码更易于测试和解耦。 - **AOP**:提供面向切面编程...
优化配置时,要考虑缓存策略,如一级缓存和二级缓存的使用,以及查询优化,如避免N+1查询问题和过多的HQL(Hibernate Query Language)查询,转而使用更高效的SQL语句。 3. **Spring**:Spring的IoC(Inversion of ...
《精通J2EE--Eclipse、Struts、Hibernate及Spring整合应用案例完整源码》是针对Java企业级开发的一份重要资源,它涵盖了四个关键的技术领域:Eclipse集成开发环境,Struts MVC框架,Hibernate对象关系映射工具,以及...
Spring 整合 Hibernate 时启用二级缓存实例详解 写在前面: 1. 本例使用 Hibernate3 + Spring3; 2. 本例的查询使用了 HibernateTemplate; 1. 导入 ehcache-x.x.x.jar 包; 2. 在 applicationContext.xml ...
1. **添加依赖**:在项目中集成Memcached和Hibernate的二级缓存支持,需要引入相应的库。这些库通常包括Hibernate的缓存插件(如spymemcached)和Memcached客户端。在Maven项目中,可以在pom.xml文件中添加以下依赖...