JPA @Version:如何使用它? [英] JPA @Version: how to use it?
本文介绍了JPA @Version:如何使用它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private int salary;
@Version
private long version;
// ...getters and setters
}
- 是否需要为
版本
创建setter / getter? - 使用Hibernate持久化该实体时,I不需要手动设置这个值,对吗?
我还需要配置什么以配合使用对Spring的hibernateTemplate.saveOrUpdate进行乐观并发检查
code>?是否支持所有数据库? - 如何对此实体进行单元测试?在我的数据库中,所有显示版本字段的记录值都为0
- 每次调用
hibernateTemplate.saveOrUpdate
是否会增加版本值? / li>
- Is it required to create setter/getter for
version
? - When persisting this entity with Hibernate, I don't need to set this value manually, right?
- What else do I need to configure in order to use optimistic concurrency checking with Spring's
hibernateTemplate.saveOrUpdate
? Are all databases supported? - How to unit-test this entity? In my database all my records showing version field have value of 0
- Will calling
hibernateTemplate.saveOrUpdate
increment the version value every time?
推荐答案
我会说:
I would say:
- set / get版本是必需的,因为您可能有时会自己指定版本(当从旧数据重新创建新实例时) 您不需要if你从数据库中读取实例。 (当用新代码在你的代码中创建它时,这将是一个不同的故事)。
- 我什么都看不到。我从来没有遇到数据库问题。
- 在我看来,单元测试不会进入数据库,因此涉及数据库的测试称为集成测试。你不应该有太多它们,因为它们很慢,而且它们并不真正测试你的代码,而是更多的是Hibernate / Driver / Database代码......你应该相信它们,或者只测试一次,而不是对于所有实体。
要查看超过0的版本值,请在事务中读取/修改/更新您的实体,版本将增加1。退出交易,重新执行,价值增加... - 每次数据库行被修改时,版本都会增加。
这篇关于JPA @Version:如何使用它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文