繁体   English   中英

休眠:处理多个事务?

[英]Hibernate: Handling Multiple Transactions?

我正在尝试并且非常想了解Hibernate。 如果两个或多个用户尝试使用不同PC上的相同表格在同一表格中同时插入内容,

  • Hibernate将如何管理该交易?
  • 哪个记录将首先保存?
  • 会锁吗?
  • 它在内部如何运作?

让我们命名用户A和B。

用户A的请求将通过事务更新数据库,并且在该事务结束时,更改将默认提交给数据库。(当然,您可以更改)

用户B的请求也将在另一个事务中执行,最后,该请求也将提交给db。

提交到数据库时,将锁定并发控制,它取决于数据库和休眠配置。

  • 乐观锁

使用开放式锁定时,您将一个特殊的属性(一个数字,一个时间戳)映射为一个版本(因此您实际上有一个列)。 检索实体时将读取此版本,并在更新过程中将其包含在where子句中并由Hibernate递增。

  • 悲观锁定

使用悲观锁定时,Hibernate会锁定记录供您独占使用,直到完成记录为止

希望这可以帮助。

Hibernate提供了基于版本的解决方案(乐观锁)。

@Version

可以使用注释。

实体的字段可以只是int或时间戳(在实体表中具有相应的列)。 读取实体时,将检索版本。 检查保存版本,如果已更改,则休眠以防止更改数据库。

阅读这个这个

Hibernate可以为您执行自动乐观并发控制。 它可以自动检测在用户思考时间内是否发生了并发修改。 在对话结束时进行检查。这称为自动版本控制。 交易管理将处理这些,我们无需担心

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM