gpt4 book ai didi

java - JPA @版本 : how to use it?

转载 作者:IT老高 更新时间:2023-10-28 13:54:02 25 4
gpt4 key购买 nike

@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;

private int salary;

@Version
private long version;

// ...getters and setters
}
  1. 是否需要为version创建setter/getter?
  2. 当用 Hibernate 持久化这个实体时,我不需要手动设置这个值,对吧?
  3. 为了使用 Spring 的 hibernateTemplate.saveOrUpdate 进行乐观并发检查,我还需要配置什么?是否支持所有数据库?
  4. 如何对这个实体进行单元测试?在我的数据库中,我所有显示版本字段的记录的值为 0
  5. 每次调用 hibernateTemplate.saveOrUpdate 都会增加版本值吗?

最佳答案

我会说:

  1. 需要设置/获取版本,因为有时您可能会自己分配版本(从旧数据重新创建新实例时)
  2. 如果从数据库中读取实例,则不需要。 (使用 new 在您的代码中创建它时,情况就不同了)。
  3. 我什么也没看到。我从来没有遇到过数据库问题。
  4. 在我看来,单元测试不去数据库,所以涉及数据库的测试称为集成测试。你不应该有太多它们,因为它们很慢,而且它们并没有真正测试你的代码,而是更多的 Hibernate/Driver/Database 代码......你应该相信它们,或者只测试一次,但不是为您的所有实体。
    要查看大于 0 的版本值,请在事务中读取/修改/更新您的实体,版本增加一。退出交易,再做一次,值(value)增加...
  5. 每次修改数据库行时版本都会增加。

关于java - JPA @版本 : how to use it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1838646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com