有了Ehcache Annotations for Spring还需要配置org.hibernate.cache.EhCacheProvider吗?

11-03-08 zoff2002
问一个白痴问题。

有了Ehcache Annotations for Spring还需要配置org.hibernate.cache.EhCacheProvider吗?

两者有区别和联系不?

         

banq
2011-03-08 18:33
应该需要,这两个属于不同层,多层架构基本三层,表现界面层 业务层和持久层。

zoff2002
2011-03-08 18:45
首先感谢banq的快速回复。

Cache系统中Service或则DAO层的get/find等方法返回结果,如果数据更新(使用Create/update/delete方法),则刷新cache中相应的内容,从使用的角度,感觉两者是可以相互替换的,也即使用哪一个都无妨,只是配置方法和由谁接管而已,也即是spring来接管还是hibernate来接管。个人观点,不知对不对,所以那到这里来讨论一下,听听大家的意见。

banq
2011-03-08 19:47
2011年03月08日 18:45 "zoff2002"的内容
感觉两者是可以相互替换的,也即使用哪一个都无妨,只是配置方法和由谁接管而已,也即是spring来接管还是hibernate来接管 ...

其实是一样的,关键问题是:ehcache被hibernate的封装其内部,在Spring中配置的是Hibernate的属性,而不是将其二级缓存直接作为Bean来管理,如:

   <prop key="hibernate.cache.use_query_cache">true</prop>
                 <prop key="hibernate.cache.use_second_level_cache">true</prop>
                 <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<p>

如果Hibernate是基于Spring的IOC容器,正如Struts2.x可以使用Spring 的IOC容器一样,那么两者可以直接使用一个ehcache。

从这个方面看出,Hibernate不是非常透明,所谓设计的透明性就是其内部组件可以全部拆开打散。

zoff2002
2011-03-09 16:40
2011年03月08日 19:47 "banq"的内容
如果Hibernate是基于Spring的IOC容器,正如Struts2.x可以使用Spring 的IOC容器一样,那么两者可以直接使用一个ehcache。 ...

嗯,谢谢banq,目前使用组合spring mvc +spring3.0.5 + hibernate3.6 + Ehcache annotation for spring,就没有配置org.hibernate.cache.EhCacheProvider,还在开发,暂时没有发现什么问题。只是有点担心而已,所有这里问问哈。

猜你喜欢
2Go 1 2 下一页