我想在我的应用程序中一起使用Spring-Hibernate和JDBC。
Hibernate应该从一个线程进行所有更新和写入,而其他线程应该能够从数据库读取而无需太多的同步工作。
那些使用JDBC的线程是否会提供正确的结果(如果他们在调用persist()
或merge()
后很短的时间内从数据库中读取)或者它可能会发生,那么Hibernate
没有刷新任何更新,因此其他线程返回错误的数据库条目?
答案 0 :(得分:3)
“Wrong”取决于您为连接池设置的隔离级别。
我认为如果Hibernate和Spring共享相同的连接池并且您为所有连接将隔离级别设置为SERIALIZABLE,它可以工作。
长时间运行的交易将成为问题。如果你的所有写操作都很快,你就不会阻止。如果您不快速提交和刷新更新,则读取操作将必须阻塞并等待或允许“脏读”。
答案 1 :(得分:0)
这取决于。你基本上是在描述竞争条件 - 如果你想确保你的读线程只在写线程持续存在后读取,你将不得不研究线程同步方法。
干杯,