Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Hibernate中session.lock方法的用途是什么_Hibernate - Fatal编程技术网

Hibernate中session.lock方法的用途是什么

Hibernate中session.lock方法的用途是什么,hibernate,Hibernate,我正在经历冬眠。我没有通过这种方法得到我们想要达到的目标 p1 = (Person)session. get(Person.class,1);// person name is scott here // here peson name got update to henry by anothet thread session. lock(person, LockMode.READ) line 3 // still name is henry too 我尝试了上面的代码片段,但它并没有从第

我正在经历冬眠。我没有通过这种方法得到我们想要达到的目标

 p1  = (Person)session. get(Person.class,1);// person name is scott here
// here peson name got update to henry by anothet thread
session. lock(person, LockMode.READ) line 3
// still name is henry too
我尝试了上面的代码片段,但它并没有从第3行的数据库中读取此人。 文档说明,这可用于执行版本检查

不确定在任何情况下它如何检查版本并帮助开发人员

同样,也不确定session.lock(person,LockMode.None)将实现什么。文档中说,
LockMode.NONE
用于简单地将临时实例与会话重新关联


不确定将临时实例与会话重新关联意味着什么。一个简短的场景会有很大帮助?

不同的锁定模式旨在防止实体同时被修改和从多个源读取,有关详细信息,请参阅文档条目。根据我的经验,这些很少需要,因为数据库隔离级别通常根据需要负责锁定:

用户不打算花太多时间担心锁定问题 策略。通常只需为服务器指定一个隔离级别就足够了 JDBC连接,然后简单地让数据库完成所有工作。 但是,高级用户可能希望获得独占悲观锁 或者在新事务开始时重新获取锁

关于“一个临时实例与会话的重新关联”(我实际上认为它们意味着分离的实例?),考虑下面的图片():

以下是对以下内容的描述:

Hibernate定义并支持以下对象状态:

  • 瞬态-如果对象刚刚被实例化,那么它就是瞬态的 使用新操作符,并且它与Hibernate不关联 一场它在数据库中没有持久表示,也没有 已分配标识符值。临时实例将被删除 如果应用程序未保存 再也没有参考资料了。使用Hibernate会话创建一个对象 持久化(并让Hibernate处理 需要为此转换执行)
  • 持久的-持久的 实例在数据库中具有表示形式和标识符值。 它可能只是被保存或加载了,但是,根据定义是这样的 在会话的范围内。Hibernate将检测对所做的任何更改 对象处于持久状态,并将该状态与 工作单元完成时的数据库。开发人员不执行 手动更新语句,或在需要对象时删除语句 暂时的
  • 分离-分离实例是指 已持续,但其会话已关闭。提及 当然,该对象仍然有效,分离的实例可能仍然有效 甚至可以在这种状态下进行修改。可以重新附着分离的实例 在以后的某个时间点进行新的会话,使其 修改)再次持续。此功能启用编程 需要用户思考时间的长时间运行的工作单元的模型。我们 将它们称为应用程序事务,即来自 用户的观点