栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在spring

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在spring

自从我发布这个问题已经有一段时间了,但是我已经弄清楚了。我将解释自己的工作,以便对他人有所帮助。

注释

@Version
是一个javax.persistence接口,而不是我前面提到的spring-data rest jpa框架。

如果要使用@Version,则需要在域对象中创建一个version字段,如下所示:

@Version@Column(name = "VERSION")private long version;

如果您使用的是hibernate模式,它将自动提取注释,并在您的表(以MySql为例)中创建一个“版本”行。每次更新记录时,hibernate状态都会使计数器增加1。

现在为什么要这样?嗯,您之所以想使用它,是因为它减少了客户处理陈旧数据的机会。每当客户从您那里检索信息时,就会向他提供他请求的数据的版本。例如

{ <-- School entity -->    "id": 1,    "version": 0,          "name": "De regenboog",    "street": "Plantaanstraat",    "number": "2",    "zipCode": "1234AS",    "city": "Amsterdam"}

现在,如果客户想要更改有关此特定记录的某些信息,它将发送新信息以及版本值。在这种情况下,让我们更改学校的名称。

 { <-- School entity -->    "id": 1,    "version": 0,          "name": "Stackoverflow",    "street": "Plantaanstraat",    "number": "2",    "zipCode": "1234AS",    "city": "Amsterdam" }

Hibernate提供了一个查询您的信息,并添加了一个额外的“ where”子句来检查版本。

update .... where id = 1 andversion = 0
。现在,如果该行已更新,则意味着您提供了正确的版本,并且在您请求信息,更改信息并将其发送回之间,没有其他人更改过该特定信息。不错吧?

现在,如果该行未更新怎么办?这意味着在您请求信息后,在您快速洗手间时,其他人更新了该行。这意味着您的版本已过时!现在需要发生的事情实际上是特定于用例的,因此我将不赘述:)

希望有人可以使用此信息!

谢谢大家



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号