项目中使用了Hibernate,在要测试之前将应用部署到客户测试环境中时发现程序响应明显缓慢,经查后发现Hibernate的级联加载大大加大了响应时间,在加入了二级缓存(我用的是ehcache)后,发生了一系列问题,现做个记载
引用:
Spring Hibernate SessionFactory相关配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
<prop key="hibernate.cache.use_second_level_cache">
true
</prop>
<prop key="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</prop>
</props>
</property>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
<property name="cacheQueries">
<value>true</value>
</property>
</bean>
<prop key="hibernate.cache.use_query_cache">true</prop>
<property name="cacheQueries">
<value>true</value>
</property>
以上是开启了查询缓存
怎么配置实体缓存请google
Ehcache配置:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<!-- 缓存最大数目 -->
<defaultCache
maxElementsInMemory="1000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
/>
<cache name="org.hibernate.cache.UpdateTimestampsCache"
maxElementsInMemory="5000"
eternal="false"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
overflowToDisk="false"/>
<cache name="org.hibernate.cache.StandardQueryCache"
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
overflowToDisk="false"/>
<cache name="com.sinotrust.entity.data.DataDir"
maxElementsInMemory="500"
eternal="true"
overflowToDisk="false"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
/>
<cache name="com.sinotrust.entity.ras.RasDicCodemanager"
maxElementsInMemory="700"
eternal="true"
overflowToDisk="false"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
/>
<cache name="com.sinotrust.entity.ras.RasDicCatalog"
maxElementsInMemory="100"
eternal="true"
overflowToDisk="false"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
/>
<cache name="com.sinotrust.entity.ras.RasSysMenuconf"
maxElementsInMemory="50"
eternal="true"
overflowToDisk="false"
timeToIdleSeconds="180"
timeToLiveSeconds="360"
/>
</ehcache>
问题1:实体新增后通过级联方式获取不到新增内容
原因是因为我在新增时没有在关联对像的set集合里加入新增的对像因此集合内和数据库是不同步的
解决:在新增时,设置相关实体的引用关系。
问题2:修改关联时原先关联方还是保有修改对像
解决:在修改时,先将原先关联方引用解除,再设置新的关系
分享到:
相关推荐
hibernate二级缓存 ehcache
此配置和包,是springMVC4.3.3 +spring4+hibernate5.1.3+二级缓存ehcache(不用可以关闭)+fastjson。 是正常运行的项目里拷出来的,方便大家使用。
Hibernate4二级缓存Ehcache案例,可参考博客:http://blog.csdn.net/coco2d_x2014/article/details/52927638
使用Java工程实现了Hibernate二级缓存(Ehcache),其中还有自己封装的一个jar包实现了简单的分页功能
Hibernate中默认的二级缓存机制ehcache案例,属性ehcache环境搭建,配置问题。
hibernate二级缓存相关插件(EHcache)
ehcache 二级缓存 配置使用的jar包 配置如下: <!-- 启用二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true <!-- 查询的二级缓存配置 --> <property name="hibernate....
Hibernate+ehcache二级缓存技术 Hibernate+ehcache二级缓存技术
Hibernate EhCache 二级缓存配置
Hibernate二级缓存+分页功能
本人在做项目时用到了Hibernate的二级缓存,使用的是EhCache,结合本人自己的理解总结了如何在java web项目中配合Hibernate使用二级缓存,以提高程序的性能,附带需要的文件,参考的文件,和测试类以及说明。
hibernate4配置ehcache二级缓存,以及相关的jar都在源码中。
配置 EhCache 的实例 1、 简介: EhCache缓存插件是Hibernate的另一个项目,Hibernate框架内置了对它 的支持,对于单机应用推荐使用它做为Hibernate的二级缓存。
这是补充的hibernate框架的二级缓存jar包,里面有1.2.3和3.0.2版本
2.3.1. Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。 2) 把获得的所有数据...
struts2+hibernate+ehcache二级缓存的 步骤和需要的代码及jar包
Maven搭建SpringMVC+Hibernate项目源码,包括Hibernate二级缓存Ehcache的搭建等等,博文地址:http://blog.csdn.net/fengshizty/article/details/43635305
hibernate二级缓存EHCache所需jar包
SSH三层架构MVC(struts1.3+spring2.x+hibernate3.2),Hibernate(ehcache)二级缓存技术,Spring 注解形式依赖注入,ehcache缓存 源代码,内有MySql anbyke.sql文件,方便创建数据库演示效果!
hibernate二级缓存研究实验结论,希望对您有用