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

Séquence d'hibernation sur oracle, @GeneratedValue(strategy =GenerationType.AUTO)

Ces annotations ne créent pas deux séquences, une seule. Est-ce correct/attendu ?

C'est le comportement attendu. Lors de l'utilisation de @GeneratedValue(strategy = GenerationType.AUTO) , le fournisseur JPA choisira une stratégie appropriée pour la base de données particulière. Dans le cas d'Oracle, ce sera SEQUENCE et, puisque vous n'avez rien spécifié, Hibernate utilisera une seule séquence globale appelée hibernate_sequence .

Est-ce correct? Eh bien, je ne sais pas, cela dépend de vos besoins. Juste au cas où, la valeur maximale par défaut pour une séquence Oracle est 1E+27, ou 1 000 000 000 000 000 000 000 000 000. C'est suffisant pour beaucoup.

Maintenant, il est possible d'utiliser GenerationType.AUTO et toujours contrôler le nom de la séquence lorsque la base de données utilise des séquences :

@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
private Long id;