【问题标题】:Concurrency control in a shared database共享数据库中的并发控制
【发布时间】:2013-02-27 18:47:05
【问题描述】:

假设我有一个由多个应用程序共享的数据库。一个应用程序使用基于 ORM 的方法(比如休眠)进行持久性,另一个应用程序使用 sql 进行持久性。两者都对数据库进行写操作。

如果我们选择乐观锁定选项,我们如何确保并发控制? 如果使用 SQL 插入数据,Hibernate 会自动同步持久化对象

【问题讨论】:

  • 你在休眠中使用缓存吗?
  • 说我没有使用缓存 .. 如果我使用版本控制方法进行乐观锁定 .. orm 将如何知道另一个应用程序已更新数据库

标签: hibernate jdbc orm locking database-concurrency


【解决方案1】:
  • 使用 SQL 的应用程序可以手动进行乐观锁定。我会在下面解释。

  • 使用 Hibernate 的应用程序不会知道其他应用程序新插入的对象,但它会在加载更新陈旧数据并与其他应用程序冲突时抛出异常。 HIbernate 使用这种方式(乐观锁定)来保护更新过时的数据,这些数据是由其他用户较早加载和更新的。

  • 我们可以使用verion属性手动使用乐观锁:

    update table1 set name='new name', version=version+1 where version=versionLoadedBeforeUpating and id=1234;

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2016-01-11
    相关资源
    最近更新 更多