PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

L'hibernation doit-elle utiliser des séquences uniques pour chaque table ?

J'ai récemment résolu ce problème pour mon projet. J'utilise le générateur de séquence amélioré (qui est la valeur par défaut pour les générateurs de style séquence) et définit le prefer_sequence_per_entity paramètre à true .

Contenu de mon package-info.java :

@GenericGenerator(
    name = "optimized-sequence",
    strategy = "enhanced-sequence",
    parameters = {
        @Parameter(name="prefer_sequence_per_entity", value="true"),
        @Parameter(name="optimizer", value="hilo"),
        @Parameter(name="increment_size", value="50")})
package org.example.model;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

Côté utilisation il vous suffit de

@Id @GeneratedValue(generator="optimized-sequence")
public long id;

Je préfère avoir des séquences séparées car parfois je supprime une table et la recrée, et je veux que l'ID commence à partir d'une.