如何通过JPA和Hibernate管理序列?

时间:2009-01-21 08:50:53

标签: hibernate jpa sequences

我在我的项目中使用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)的allocateSize默认值设置为50而不是1?这有什么好处?
  2. Hibernate用于计算生成ID的默认算法是什么?看来Hibernate使用我的Oracle数据库托管的序列返回的值,但是在将它分配给我的实体之前修改它...

1 个答案:

答案 0 :(得分:0)

  1. 这是出于性能原因(预取)
  2. 阅读hibernate源代码。