假设我有一个由多个应用程序共享的数据库。一个应用程序使用基于 ORM 的方法(比如休眠)进行持久性,另一个应用程序使用 sql 进行持久性。两者都对数据库进行写操作。
如果我们选择乐观锁定选项,我们如何确保并发控制?如果使用 SQL 插入数据,Hibernate 会自动同步持久化对象吗
假设我有一个由多个应用程序共享的数据库。一个应用程序使用基于 ORM 的方法(比如休眠)进行持久性,另一个应用程序使用 sql 进行持久性。两者都对数据库进行写操作。
如果我们选择乐观锁定选项,我们如何确保并发控制?如果使用 SQL 插入数据,Hibernate 会自动同步持久化对象吗
使用 SQL 的应用程序可以手动进行乐观锁定。我将在下面解释。
使用 Hibernate 的应用程序不会知道其他应用程序新插入的对象,但它会在加载更新陈旧数据并与其他应用程序冲突时抛出异常。HIbernate 使用这种方式(乐观锁定)来保护更新过时的数据,这些数据是由其他用户较早加载和更新的。
我们可以使用 verion 属性手动使用乐观锁定:
update table1 set name='new name', version=version+1 where version=versionLoadedBeforeUpating and id=1234;