对于依赖于实体的Lazy Initialization Open Session [EntityManager] in View
的类的使用,是否存在任何标准方式(或替代(fetch = FetchType.LAZY)
)
以下两个用例:
在JUnit测试用例中
在石英工作中
对于上述两种情况,OSIV模式都不起作用,因为没有Web请求进入系统。如何在这种情况下进行延迟加载工作?
PS:Spring的OpenEntityManagerInViewFilter
和OpenEntityManagerInViewInterceptor
都是面向Web请求的。
get
来预取所有此类关系/ entites。@Before
/ @after
中手动打开/关闭EM。但我正在寻找更优雅和标准的东西。答案 0 :(得分:0)
交易是您所需要的。打开一个事务,获取数据,操作它,然后在完成后关闭事务。 Spring将EntityManager
生命周期绑定到事务的生命周期,并在需要时将其保持打开状态。
Spring Transaction Management本身就是一个重要的主题,但使用它确实非常简单。请参阅docs。