He configurado para usar Hibernate secuencia de PostgreSQL (a través de anotaciones) para generar valores de clave de la columna principal Identificación de la siguiente manera:uso de hibernación de la secuencia de PostgreSQL no afecta a la tabla de secuencia
@Id
@SequenceGenerator(name="pk_sequence",sequenceName="entity_id_seq")
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="pk_sequence")
@Column(name="id", unique=true, nullable=false)
public int getId() {
return this.id;
}
Lo que veo con esta configuración es que de hibernación ya está asignando id valores> 3000 en persistente, mientras que la consulta en secuencia utilizada muestra los siguientes:
database=# select last_value from entity_id_seq;
last_value
------------
69
(1 ro w)
Preguntas:
¿Hay algún problema o no?
¿Debería hibernar la sincronización con la tabla de secuencia?
En caso negativo, ¿dónde almacena la última ID generada?
Gracias.
¡gracias, hermano! Observé allocationSize desde el principio, pero pensé que se trata de número de invocaciones y asumí que la secuencia debería estar bien con cualquier valor. ¡Gracias de nuevo! – forker
Supongo que esto lo hace Hibernate por motivos de rendimiento (menos viajes de ida y vuelta a la base de datos). Si experimenta contención en la secuencia en sí con un low allocationSize (llamadas slow nextval()), puede considerar establecer un caché para la secuencia en PostgreSQL –