【问题标题】:How are managed the sequences by JPA and Hibernate?JPA 和 Hibernate 如何管理序列?
【发布时间】:2009-01-21 08:50:53
【问题描述】:

我在我的项目中使用 Hibernate,我的许多实体都使用序列作为其技术密钥。 例如:

@Entity
@Table(name = "T_MYENTITY")
@SequenceGenerator(name = "S_MYENTITY", sequenceName = "S_MYENTITY")
public class MyEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "S_MYENTITY")
    @Column(name = "MY_ENTITY_ID")
    private Long entityId;

    ...

}

我对这个类的新对象持久化时Hibernate生成的ID有两个疑问:

  1. 为什么 SequenceGenerator(来自 javax.persistence)的默认值 allocationSize 设置为 50 而不是 1?这样做有什么好处?
  2. Hibernate 用于计算生成 ID 的默认算法是什么?似乎 Hibernate 使用了由我的 Oracle 数据库托管的序列返回的值,但是在将其分配给我的实体之前对其进行了修改...

【问题讨论】:

    标签: hibernate jpa sequences


    【解决方案1】:
    1. 这是出于性能原因(预取)
    2. 阅读休眠源代码。

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2021-06-07
      • 2010-09-21
      • 2011-06-30
      • 2012-11-03
      • 2012-09-16
      • 1970-01-01
      • 2016-03-24
      相关资源
      最近更新 更多