2009-01-21 11 views
5

J'utilise Hibernate dans mon projet, et beaucoup de mes entités utilisent une séquence pour leurs clés techniques. Par exemple:Comment sont gérées les séquences par JPA et 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; 

    ... 

} 

J'ai deux questions sur l'ID généré par Hibernate lorsqu'un nouvel objet de cette classe est conservée:

  1. Pourquoi SequenceGenerator (de javax.persistence) a une valeur par défaut de allocationSize défini à 50 au lieu de 1? Quels sont les intérêts de cela?
  2. Quel est l'algorithme par défaut utilisé par Hibernate pour calculer l'ID généré? Il semble que Hibernate utilise la valeur retournée par la séquence animée par ma base de données Oracle, mais le modifier avant de l'assigner à mon entité ...

Répondre

0
  1. Ceci pour des raisons de performance (préchargement)
  2. Lire le code source d'hibernation.