在新线程中休眠休眠

时间:2019-06-30 15:01:58

标签: java database spring multithreading hibernate

我有一个Spring应用程序,需要在用户登录时进行繁重的数据加载。为了使用户不必等待数据加载,我想异步加载它。不幸的是,由于新线程没有会话,我依靠一些延迟加载的对象来加载此数据,这导致了Hibernate的问题。

虽然我可以将对象加载到主线程中,并在所有字段加载完成后将它们传递给我,但我还是避免使用这种冗长的方法。有没有办法在新线程中安全地加载这些惰性实体?或者潜在地,Spring是否有一种无需关闭当前线程即可将响应返回给客户端的方法?

1 个答案:

答案 0 :(得分:0)

我不能说这种方法是否是最佳解决方案,而是通过Spring的@ Transactional-annotation在用于创建新线程中延迟加载对象的所有方法上使用,除了创建新线程的方法之外,我能够在没有任何其他代码的情况下完成这项工作。

当然,也可以选择快速加载对象。由于我在Spring中使用JPA实现,因此只需将.getOne()调用更改为.findById()调用即可。