我刚刚在我的DAO类上配置了@PersistenceContext(type = PersistenceContextType.EXTENDED),以便在视图层上进行延迟加载(需要让它不为此关闭会话)但是我遇到了1级缓存的问题(我想)..因为即使我的二级缓存设置关闭,对象也会被缓存。关闭“type = PersistenceContextType.EXTENDED”之后,我让系统没有缓存对象,而是再次陷入延迟加载问题。
// @ PersistenceContext(类型= PersistenceContextType.EXTENDED)
@PersistenceContext
私有EntityManager entityManager;
有没有办法控制这个?我真的需要延迟加载但不希望每次都将我的对象存储在1级缓存中。
感谢
答案 0 :(得分:1)
除非你真的想要使用扩展的持久化上下文并且真正理解它的含义(我不是故意迂腐,但这很重要,因为扩展的实体管理器具有不同的线程,生命周期和内存管理语义),建议使用通常的 OEIV(Open EntityManager in View)模式来解决延迟加载问题。
Spring提供了这种模式的两种实现,包括过滤器(OpenEntityManagerInViewFilter
)和拦截器(OpenEntityManagerInViewInterceptor
)。来自javadoc:
用于“Open EntityManager in View”模式,即允许在Web视图中进行延迟加载,尽管原始事务已经完成。