Oracle
 sql >> Database >  >> RDS >> Oracle

Sequenza di ibernazione su Oracle, @GeneratedValue(strategy =GenerationType.AUTO)

Queste annotazioni non stanno creando due sequenze, solo una. È corretto/previsto?

Questo è il comportamento previsto. Quando si utilizza @GeneratedValue(strategy = GenerationType.AUTO) , il fornitore dell'APP sceglierà una strategia appropriata per il particolare database. Nel caso di Oracle, questa sarà SEQUENCE e, poiché non hai specificato nulla, Hibernate utilizzerà una singola sequenza globale chiamata hibernate_sequence .

È corretto? Beh, non lo so, dipende dalle tue esigenze. Per ogni evenienza, il valore massimo predefinito per una sequenza Oracle è 1E+27 o 1.000.000.000.000.000.000.000.000.000. Questo è abbastanza per molti.

Ora è possibile utilizzare GenerationType.AUTO e controlla ancora il nome della sequenza quando il database utilizza le sequenze:

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