5
Ich verwende Hibernate in meinem Projekt, und viele meiner Entitäten verwenden eine Sequenz für ihre technischen Schlüssel. Zum Beispiel:Wie werden die Sequenzen von JPA und Hibernate verwaltet?
@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;
...
}
Ich habe zwei Fragen über die von Hibernate generierte ID, wenn ein neues Objekt dieser Klasse beibehalten wird:
- Warum SequenceGenerator (von javax.persistence) einen Standardwert hat von allocationSize auf 50 statt 1 gesetzt? Was sind die Interessen?
- Welcher Standardalgorithmus wird von Hibernate zur Berechnung der generierten ID verwendet? Es scheint, dass Hibernate den Wert durch die Sequenz gehostet durch meine Oracle-Datenbank zurück verwendet, aber es dann ändern, bevor es zu meiner Einheit zuweisen ...