java - Hibernate 在新线程中延迟加载

标签 java database spring multithreading hibernate

我有一个 Spring 应用程序,需要在用户登录时执行大量数据加载。为了让用户不必等待数据加载,我想异步加载它。不幸的是,我依赖一些延迟加载的对象来加载这些数据,这会导致 Hibernate 出现问题,因为新线程没有 session 。

虽然我可以在主线程中加载对象并在加载所有字段后传递它们,但我宁愿避免这种冗长的方法。有没有办法在新线程中安全地加载这些惰性实体?或者,Spring 有没有办法在不关闭当前线程的情况下向客户端返回响应?

最佳答案

我不能说这种方法是否是最佳解决方案,但是除了创建新线程的方法之外,通过在新线程中用于到达延迟加载对象的所有方法上使用 Spring 的 @Transactional-annotation,我无需任何额外代码即可完成这项工作。

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

关于java - Hibernate 在新线程中延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825862/

相关文章:

mysql - 我的 MySQL INSERT 触发器不起作用?为什么?

mysql - 如何在其他列中显示 1 列总和

java - Spring Transaction (@Transaction) 使用普通 JDBC,无需 JdbcTemplate

spring - 打印所有加载的 Spring bean - Spring Boot

java - 调用类的方法时 "used"是什么意思

java - 为什么分配给子类的引用不能访问子类的成员

database - noSql 相对于 newSql 的优势

jquery - 如何从ajax调用Spring Controller 渲染新的jsp页面

客户端关闭连接后Java TCPSocket中断

java - Android - Mediaplayer 下一个按钮不起作用