2017-12-21 3 views
1

Betrachten Sie meine DB-Tabelle Primärschlüssel ist automatisch inkrementiert oder mit einer Sequenz, wie Hibernate verwaltet, um den Primärschlüssel des neu eingefügten Datensatz direkt nach dem Aufruf von save() -Methode zu erhalten.Wie Hibernate holt neu eingefügten Datensatz Primärschlüssel, wenn es Auto-Inkrement oder eine Sequenz verwendet?

Ich wollte nur die interne Kommunikation zwischen Hibernate-Layer und DB-Layer wissen.

+0

Hibernate ist Open-Source, überprüfen Sie ihre Quelle, wie sie es tun. –

Antwort

0

Jeder Datenbankanbieter (MySQL, Oracle, etc.) wird eine benutzerdefinierte Dialect Implementierung (zB MySQLDialect oder OracleDialect) haben, so sind Sie wahrscheinlich am besten zu poke through that code

ich in den folgenden Themen finden Oracle9Dialect.java

@Override 
public String getSequenceNextValString(String sequenceName) { 
    return "select " + getSelectSequenceNextValString(sequenceName) + " from dual"; 
} 
+0

Möchten Sie den Downvote erklären? Denke daran, das ist @ ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ: D –

+0

Der ganze Punkt des Winterschlafs ist, von der Abhängigkeit des Verkäufers zu befreien. OP fragt nicht, wie Orakel es handhabt. OP fragt, wie Hibernate das verwaltet. –

+0

Hibernate hat für jeden Anbieter einen benutzerdefinierten Code geschrieben, sodass Entwickler sich keine Gedanken darüber machen müssen. Es gibt einen Dialekt pro Anbieter im Hibernate-Code. Die Frage war, wie ... und meine Antwort zeigt genau, wo der Code lebt. Also, warum der Downvote? –

Verwandte Themen