2015-08-02 15 views
5

Sto provando a generare automaticamente chiavi primarie alfa-numeriche (ad es. TESLA1001) in Sospensione. Attualmente sto usando il database Oracle, quindi ho una chiamata JDBC a my_sequence.NEXTVAL (1002) per incrementare il numero e aggiungere al prefisso (TESLA).Possiamo generare automaticamente chiavi primarie senza query o chiamate JDBC?

Consideriamo MySQL come un'opzione, ma non supportano le sequenze. Quindi sono costretto a riscrivere la tecnica di generazione di ID personalizzato usando la chiamata JDBC a una stored procedure.

C'è un modo in cui posso avere un'implementazione generica per generare chiavi primarie personalizzate senza l'utilizzo di JDBC e query dipendenti dal database? Quindi, in futuro, se avessi bisogno di testare la mia applicazione con MSSQL, ho bisogno di cambiare solo la mia configurazione hiberate e le cose funzionano bene!

+0

Si dispone di autoIncrement con MySql –

+0

Sì, ma l'autoincremento funziona solo per una tabella, è possibile eseguire una query su last_insert_id() da tutto ciò che è coinvolto se si dispone di più tabelle o se è possibile utilizzare i trigger. – maraca

+2

Inoltre, non è troppo difficile implementare una sequenza utilizzando una stored procedure, ad es. sequenze di tabelle (nome, numero) e una procedura getNext (nome) che aumenta il numero di uno e lo restituisce. – maraca

risposta

1

Perché è necessario un modo per coordinare il numero di sequenza, sarà sempre necessario utilizzare un generatore di sequenza centralizzato. Una chiave primaria alfa-numerica avrà un rendimento peggiore dell'indicizzazione rispetto a un generatore UUID.

Se fossi in te, passerei allo UUID identifers che sono entrambi unici e portabili su tutti i principali RDBMS.

Problemi correlati