java - 从不同线程一起使用 Hibernate 和 JDBC

标签 java multithreading spring hibernate jdbc

我想在我的应用程序中同时使用 Spring-Hibernate 和 JDBC。

Hibernate 应该从一个线程执行所有更新和写入操作,而其他线程应该能够从数据库中读取数据,而无需太多同步工作。

那些使用 JDBC 的线程是否会提供正确的结果(如果它们在调用 persist()merge() 后不久从数据库中读取数据),或者是否会发生这种情况,即 hibernate 没有刷新任何更新,因此其他线程返回错误的数据库条目?

最佳答案

“错误”取决于您为连接池设置的隔离级别。

我认为,如果 Hibernate 和 Spring 共享相同的连接池,并且您将所有连接的隔离级别设置为 SERIALIZABLE,那么它就可以工作。

长时间运行的事务将成为问题。如果所有写入操作都很快,则不会阻塞。如果您不快速提交和刷新更新,则读取操作将不得不阻塞并等待或允许“脏读”。

关于java - 从不同线程一起使用 Hibernate 和 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20950581/

相关文章:

python - 在循环中运行两个相互依赖的线程

multithreading - 在 Rayon 线程内调用 `Arc::new()` 会导致垃圾编译器错误

java - Spring Solr 存储库

java - 具有 Spring Boot 集成的 Cucumber Java - Spring @Autowired 抛出 NullPointer 异常

java - 无法为类示例创建调用适配器。简单

java - 组合 CASE 和 LIMIT 时出现 MySQL 语法错误(仅有时) - 由 JPA 生成

java - 序列化 HashMap 的快速方法

java - 如何使用 JFileChooser 直接打开目录(位置)?

multithreading - 套接字Winsock异步阻止同时读取写入

java - 使用 WireMock 和 Eureka 的 Spring Boot 集成测试失败,返回 "No instances available"