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

时间:2014-01-06 12:58:56

标签: java multithreading spring hibernate jdbc

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

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

那些使用JDBC的线程是否会提供正确的结果(如果他们在调用persist()merge()后很短的时间内从数据库中读取)或者它可能会发生,那么Hibernate 没有刷新任何更新,因此其他线程返回错误的数据库条目?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

这取决于。你基本上是在描述竞争条件 - 如果你想确保你的读线程只在写线程持续存在后读取,你将不得不研究线程同步方法。

干杯,