2009-01-21 82 views
5

我在我的項目中使用Hibernate,並且我的許多實體使用序列作爲技術密鑰。 例如:如何通過JPA和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)具有一個默認值分配大小設置爲50而不是1?那有什麼好處呢?
  2. Hibernate用來計算生成的ID的默認算法是什麼?看來,Hibernate使用通過我的Oracle數據庫託管序列返回的值,但隨後將其分配給我的實體之前修改...

回答

0
  1. 這是出於性能的考慮(預取)
  2. 閱讀休眠源代碼。