Java 使用@PersistenceContext(type=PersistenceContextType.EXTENDED)时避免1级缓存问题

Java 使用@PersistenceContext(type=PersistenceContextType.EXTENDED)时避免1级缓存问题,java,hibernate,spring,jpa,jpa-2.0,Java,Hibernate,Spring,Jpa,Jpa 2.0,我刚刚在我的DAO类上配置了@PersistenceContext(type=PersistenceContextType.EXTENDED),以便在视图层上进行延迟加载(需要使其不关闭会话),但是我在1级缓存方面遇到了问题(我想)。。因为即使“我的二级缓存设置”处于禁用状态,对象也会被缓存。关闭“type=PersistenceContextType.EXTENDED”后,我发现系统没有缓存对象,但又陷入了延迟加载问题 //@PersistenceContext(type=Persistenc

我刚刚在我的DAO类上配置了@PersistenceContext(type=PersistenceContextType.EXTENDED),以便在视图层上进行延迟加载(需要使其不关闭会话),但是我在1级缓存方面遇到了问题(我想)。。因为即使“我的二级缓存设置”处于禁用状态,对象也会被缓存。关闭“type=PersistenceContextType.EXTENDED”后,我发现系统没有缓存对象,但又陷入了延迟加载问题

//@PersistenceContext(type=PersistenceContextType.EXTENDED)
@持久上下文 私人实体管理者实体管理者

有没有办法控制这一切?我确实需要延迟加载,但不想每次都将对象存储在一级缓存中


谢谢

除非您真的想使用扩展持久性上下文并真正理解它的含义(我不是故意装腔作势,但这很重要,因为扩展实体管理器具有不同的线程、生命周期和内存管理语义),否则我的建议是使用通常的OEIV(视图中的Open EntityManager)模式以解决延迟加载问题

Spring提供了此模式的两个实现,一个过滤器()和一个拦截器()。从javadoc:

用于“视图中的OpenEntityManager”模式,即允许在web视图中延迟加载,尽管原始事务已经完成


哦,很抱歉:我正在使用hibernate jpa implhum,它将通过请求创建的线程激活我的持久性,不知道它是否会给我带来问题,但可能比PersistenceContextType.EXTENDED要好。谢谢