我们正在构建产品,因此从性能的角度来看,我需要一些帮助。 我们正在使用完整的Spring(MVC,JPA,Security等..)
我们有一个要求,即对于特定流程,可以同时执行100个业务规则。可能有n
个此类流量和业务规则。
这些规则在执行时实际上从数据库中的表中获取记录,这些规则也包含很少的LAZILY INITIALIZED ENTITIES。
我使用Futures
/ Callables
进行多线程处理,但问题是无法加载LAZY变量。它给出了Hibernate加载异常,可能是TRANSACTIONAL中的一些问题没有在不同的线程中分布。
如果还有其他办法可以告诉我吗?
答案 0 :(得分:1)
如果某个实体/实体集合是延迟获取的,并且您在另一个线程中访问它,则会遇到LazyInitialization
异常,因为只能在事务中访问延迟加载的实体,并且事务不会跨越,线程。
您可以使用DTO模式,或者如果您跨线程共享实体,请在事务中调用其惰性初始化集合getter,以便在事务本身内获取它们。
答案 1 :(得分:0)