[SEAM] seam应用还需不需要JPA的二级缓存
bighou
2009-03-09
JPA的二级缓存可以对实体对象进行EntityManagerFactory范围的缓存,但是seam提供了conversation范围的EntityManager和PojoCache,那么还有必要使用JPA的二级缓存吗?请各位提出宝贵意见
|
|
打倒小日本
2009-03-10
他们缓存的方式和目的都是不一样的
还是需要JPA的二级缓存 |
|
may_cauc
2009-03-10
怎么实现?
我用的配置是tomcat + seam + jpa(hibernate)+ehcache。 能看到ehcach启动了,但是在查询的时候还是输出sql。 在网上看到hibernate要设置query.seCacheable(true).但是jpa的quey中没有啊。 |
|
jnduan
2009-03-10
jpa根据不同的实现,需要调用query的setHint方法
不同的实现设置key和value是完全不同的 请google hibernate jpa的hint和EclipseLink(toplink)的hint |
|
jnduan
2009-03-10
可以在persistence.xml中通过Property参数指定好全局的缓存策略,然后个别的query在通过setHint方法设置单独的缓存方式。
例如,Oracle toplink推荐在使用事务的情况下使用 <property name="toplink.cache.type.default" value="Weak"/> 这样的Entity缓存策略。 hibernate jpa应该也有相应的缓存策略 |
|
bighou
2009-03-11
仔细研究了一下,jpa二级缓存是为了提高数据库访问的性能,conversation用来缓存会话状态,而PojoCache可以在应用或集群范围内共享。
|