JPA @Version:如何使用它? [英] JPA @Version: how to use it?

查看:1473
本文介绍了JPA @Version:如何使用它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

    private int salary;

    @Version
    private long version;

    // ...getters and setters
}




  1. 是否需要为版本创建setter / getter?

  2. 使用Hibernate持久化该实体时,I不需要手动设置这个值,对吗?
    我还需要配置什么以配合使用对Spring的 hibernateTemplate.saveOrUpdate进行乐观并发检查
  3. code>?是否支持所有数据库?
  4. 如何对此实体进行单元测试?在我的数据库中,所有显示版本字段的记录值都为0

  5. 每次调用 hibernateTemplate.saveOrUpdate 是否会增加版本值? / li>
  1. Is it required to create setter/getter for version?
  2. When persisting this entity with Hibernate, I don't need to set this value manually, right?
  3. What else do I need to configure in order to use optimistic concurrency checking with Spring's hibernateTemplate.saveOrUpdate? Are all databases supported?
  4. How to unit-test this entity? In my database all my records showing version field have value of 0
  5. Will calling hibernateTemplate.saveOrUpdate increment the version value every time?


推荐答案

我会说:

I would say:


  1. set / get版本是必需的,因为您可能有时会自己指定版本(当从旧数据重新创建新实例时) 您不需要if你从数据库中读取实例。 (当用新代码在你的代码中创建它时,这将是一个不同的故事)。

  2. 我什么都看不到。我从来没有遇到数据库问题。
  3. 在我看来,单元测试不会进入数据库,因此涉及数据库的测试称为集成测试。你不应该有太多它们,因为它们很慢,而且它们并不真正测试你的代码,而是更多的是Hibernate / Driver / Database代码......你应该相信它们,或者只测试一次,而不是对于所有实体。

    要查看超过0的版本值,请在事务中读取/修改/更新您的实体,版本将增加1。退出交易,重新执行,价值增加...

  4. 每次数据库行被修改时,版本都会增加。

这篇关于JPA @Version:如何使用它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆