hibernate缓存问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 06:02:10
我在spring中配置了事务
<tx:advice id="txAdvice" transaction-manager="transactionManager" >
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>

<!-- 哪些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.ysl.finsys.dao.*.*(..))" />
<!-- aop:advisor相当于aspect -->
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>

我在hibernate中使用list()和iterate()分别都尝试过了,但是在进入页面后

上面的说的没错.
spring有提供了一个方法
getHibernateTemplate().setCacheQueries(true);
spring配置文件用
<prop key="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
这样能保证只第一次执行SQL.以后就用缓存了.
前提是同一个session.

缓存只是在一个session范围内有效 也就是当session关闭时缓存即被清除。