L'ultima volta che ho creato un database Oracle per il sistema, la strategia di usare Hibernate per generare la chiave primaria era SEQUENCE, e in quel momento mi sentivo molto stanco, perché non so perché, oracle+sequence+trigger non riesce a ottenere il valore chiave primario quando si aggiungono nuovi dati.
Questa volta mi concentrerò su questo, e ci sono due nuovi problemi,
1。 Quale strategia di ibernazione per generare le chiavi primarie ha prestazioni migliori;
2。 Le strategie primarie di generazione delle chiavi dovrebbero idealmente essere cross-database.
Tutti parlano di prestazioni, Oracle usa la sequenza, quindi la chiave primaria vuole comunque essere generata in questo modo.
Poi c'è la chiave primaria per restituire i nuovi dati
Nativi Scegli uno di identità, sequenza o hilo in base alle capacità del database sottostante;
Cioè, viene generata la chiave primaria, che viene scelta tramite ibernazione.
Native e Denity sono entrambe strategie di generazione di numeri di serie con ID database, Native is Hibernate viene selezionato e generato automaticamente, Identity è auto-selezionato, Identity è MySQL, SQL2000 e altri metodi di generazione di database, e c'è anche una sequenza che è Oracle e altri metodi di generazione; in generale, Native viene selezionato automaticamente da Hibernate
Per i database che supportano internamente i campi identità (DB2, MySQL, Sybase e MS SQL), puoi usare l'identità disattivata Generazione di parole chiave. Per database che supportano sequenze internamente (DB2, Oracle, PostgreSQL, Interbase, McKoi e SAP). DB), puoi usare la generazione di parole chiave in stile sequenza. Entrambi gli approcci richiedono due volte per inserire un nuovo oggetto Query SQL.
Ho controllato più informazioni online, non so dove l'ho vista, questa strategia di generare chiavi primarie, se è mysql, sceglierà auto_increment modo di generare la chiave primaria; Se è Oracle, sceglierà il metodo della sequenza; È solo che quando usi Oracle database, devi creare un hibernate_sequence, che viene riservato da Hibernate, e che segnala un errore se non lo costruisci (testato). |