我很难找到对@GeneratedValue 的准确解释以及从数据库的角度来看发生的事情的不同策略。
是否总是查询数据库并返回最后一个可用值?如果 2 个不同的进程(不同的 Hibernate 应用程序)同时访问同一个表会发生什么?特别是使用自动数值和序列
我很难找到对@GeneratedValue 的准确解释以及从数据库的角度来看发生的事情的不同策略。
是否总是查询数据库并返回最后一个可用值?如果 2 个不同的进程(不同的 Hibernate 应用程序)同时访问同一个表会发生什么?特别是使用自动数值和序列
我假设您指的是 JPA @GeneratedValue。
@GeneratedValue
注释告诉 ORM 如何计算该字段的值。
例如:
@Id
@GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")
@Column(name="CUST_ID")
public Long getId() { return id; }
Example 2:
@Id
@GeneratedValue(strategy=TABLE, generator="CUST_GEN")
@Column(name="CUST_ID")
Long id;
要理解的关键是生成值有一个策略,生成值的策略决定了会发生什么。在上面的示例中,SEQUENCE 生成策略意味着 ORM 将在第一次保存对象时向数据库询问序列的新值。第二个示例指定表生成策略,这意味着 ORM 将参考表中的一行来确定 id 的值。在示例 2 中,没有显示使用哪个表的详细信息,因为它引用了一个名为“CUST_GEN”的生成器
您将遇到的典型生成器。
可以开发自定义生成器。与数据库的交互将取决于生成策略。
请使用http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/链接作为参考。但是,如果您能说出您要寻找的具体内容,我可能会为您提供更好的帮助。这是关于@GeneratedValue 注释的一些细节……我喜欢这篇关于同一主题的博客文章http://elegando.jcg3.org/2009/08/hibernate-generatedvalue/。他做了很好的解释。