当前位置: 首页 > 面试题库 >

默认情况下在乐观休眠中

高宸
2023-03-14
问题内容

我有一个关于乐观锁定Hibernate的问题。我试图深入了解Hibernate的乐观锁定,但是我有一个疑问。Hibernate使用版本方法(整数或时间戳)来实现乐观锁定。要进行配置,您可以使用@Version批注(或xml配置)并创建一个version属性。另一个选项是使用optimistic-
lock =“ all”属性进行配置而不进行版本控制。

我的问题是,如果您没有定义任何版本控制属性,也没有指定乐观锁定属性,那么在这种情况下哪种策略使用了Hibernate?悲观锁我很确定不会,所以我想那是乐观锁,但不知道如何。

非常感谢您的关注。


问题答案:

如果您没有将Hibernate配置为使用乐观锁定,则它根本不使用锁定。因此,在这种情况下,最后的更新总是胜出。

为了清楚起见,请注意,Hibernate乐观锁定与DBMS事务隔离完全不同。当您在一个事务中加载对象,对其进行修改并在以后将其保存到另一事务中时,hibernate乐观锁定仅在以下情况下起作用。在这种情况下,乐观锁定可确保其他事务在两者之间没有更改该对象。但是,乐观锁定不会影响并发事务的隔离-
因此,无论是否启用了Hibernate锁定,DBMS内部用于实现事务隔离的锁定(乐观或悲观)仍然有效。



 类似资料:
  • 我有一个关于Hibernate中乐观锁定的问题。我正试图深入乐观地锁定Hibernate,但我有一个疑问。Hibernate使用版本方法(整数或时间戳)来实现乐观锁定。要进行配置,可以使用@Version注释(或xml配置)并创建版本属性。另一个选项是在不使用乐观lock=“all”属性进行版本控制的情况下进行配置。 我的问题是,如果你没有定义任何版本属性,也没有指定乐观锁属性,在这种情况下,哪种

  • 问题内容: 为何默认禁用hibernate批处理/ hibernate.order_updates / hibernate.order_inserts?启用批量大小为50时有什么缺点吗?与order_updates / order_inserts参数相同。有没有不启用此功能的用例?使用此功能是否会对性能产生影响? 我只能看到这些设置在需要减少查询数量时很有用,这在应用程序和数据库服务器之间的延迟很

  • 默认情况下,我们的路由器是Yaf_Router, 而默认使用的路由协议是Yaf_Route_Static,是基于HTTP路由的, 它期望一个请求是HTTP请求并且请求对象是使用Yaf_Request_Http

  • 问题内容: 我有这样的方法: 我期望通过使用REQUIRES_NEW事务传播和所示的递归,StaleObjectStateException最终将被清除,但事实并非如此。 如何从此异常中恢复? 问题答案: 原来有一个我忽略了的“ gatcha” … 从Spring文档 在代理模式(默认)下,将仅拦截通过代理传入的“外部”方法调用。这意味着即使调用的方法标记有@Transactional,“自调用”

  • 是否有任何方法可以将外部脚本包含(或加载)到脚本引擎,以便外部脚本中定义的所有函数都可以在方法中使用? 在我们的应用程序中,我们根据用户输入执行一些java脚本代码。当用户请求时,应用程序会创建一个ScriptEngine实例并根据输入参数执行适当的javascript代码。 这里的问题是javascript中有一些重复的功能。考虑一个例子: 场景1:当用户输入为十进制纬度和经度时,计算距离 -

  • 问题内容: 我将实体添加到数据库中,并且工作正常。但是,当我检索列表时,会得到旧实体,直到取消取消部署应用程序并再次重新部署它之后,才会显示添加的新实体。这意味着默认情况下会缓存我的实体吗?但是,我没有在persistence.xml或任何此类文件中进行任何用于缓存实体的设置。 我什至尝试调用flush(),refresh()和merge()。但它仍然仅显示旧实体。我想念什么吗?请帮我。 问题答案