5
Estoy usando Hibernate en mi proyecto, y muchas de mis entidades usan una secuencia para sus claves técnicas. Por ejemplo:¿Cómo se gestionan las secuencias de JPA e 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;
...
}
Tengo dos preguntas sobre el ID generado por Hibernate cuando un nuevo objeto de esta clase se conserva:
- Por qué SequenceGenerator (de javax.persistence) tiene un valor predeterminado de allocationSize establecido en 50 en lugar de 1? ¿Cuáles son los intereses de eso?
- ¿Cuál es el algoritmo predeterminado utilizado por Hibernate para calcular la ID generada? Parece que Hibernate utiliza el valor devuelto por la secuencia organizada por mi base de datos Oracle, pero luego modificarlo antes de asignarlo a mi entidad ...