Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和Hibernate,在更新/写入期间锁定对象,但始终允许读取_Java_Hibernate_Transactions_Locking_Db2 - Fatal编程技术网

Java和Hibernate,在更新/写入期间锁定对象,但始终允许读取

Java和Hibernate,在更新/写入期间锁定对象,但始终允许读取,java,hibernate,transactions,locking,db2,Java,Hibernate,Transactions,Locking,Db2,我的应用程序使用Java、Hibernate和IBMDB2数据库。我希望在更新和写入数据时使用悲观锁定,以便其他线程在尝试更新之前需要等待资源可用。但是,我希望线程始终能够读取数据(无论数据是否被锁定,即事务是为数据打开的),并且读取操作从不锁定数据。在Hibernate和IBMDB2中,什么样的隔离级别可以实现这一点?谢谢。不太清楚Hibernate,但在DB2端,您可以使用未提交的读取隔离级别或游标稳定性隔离以及激活的“当前提交”语义(后者在DB2LUW9.7和更高版本中提供) 您的DB2服

我的应用程序使用Java、Hibernate和IBMDB2数据库。我希望在更新和写入数据时使用悲观锁定,以便其他线程在尝试更新之前需要等待资源可用。但是,我希望线程始终能够读取数据(无论数据是否被锁定,即事务是为数据打开的),并且读取操作从不锁定数据。在Hibernate和IBMDB2中,什么样的隔离级别可以实现这一点?谢谢。

不太清楚Hibernate,但在DB2端,您可以使用未提交的读取隔离级别或游标稳定性隔离以及激活的“当前提交”语义(后者在DB2LUW9.7和更高版本中提供)

您的DB2服务器驻留在哪一类操作系统上?这是一种非常悲观的日志记录,我不相信任何RDBMS都会这样做。。。但是,在java级别,您可以使用
ReentrantReadWriteLock
来实现这一点?对我来说,这似乎是一种非常普遍的情况。编辑的悲观锁定,读取的已提交隔离级别哪些进程首先锁定数据?请注意,某些因素可能会迫使优化器将要更新的内容(索引/存储页面或整个表!)之外的行锁定。如果这是一个人际互动过程,请准备在午餐/假期期间将其锁定。你如何访问这个?如果您正在进行web服务(您甚至可能不会与同一个应用程序服务器交谈!),则可能很难保留/重新加入锁。语句超时的计划是什么?