Integration von Java.time-Objekten mit JDBC- und SQL-Datenbanken
In diesem Artikel wird gezeigt, wie java.time.LocalDate
Objekte mithilfe von Java Database Connectivity (JDBC) nahtlos in SQL-Datenbanken integriert werden.
JDBC 4.2 und höher: Direkte Interaktion
Moderne JDBC-Treiber (JDBC 4.2 und höher) bieten direkte Unterstützung für java.time
-Objekte. Treiber wie der H2-Datenbanktreiber nutzen die Methoden setObject
und getObject
für eine effiziente Datenübertragung. Das Einfügen eines LocalDate
erfordert die Verwendung von PreparedStatement.setObject
und die Angabe des entsprechenden Objekttyps. Der Abruf verwendet ResultSet.getObject
und gibt auf ähnliche Weise den erwarteten Rückgabetyp an, um die Typsicherheit zu erhöhen.
Umgang mit nicht kompatiblen JDBC-Treibern
Für ältere Treiber, denen die JDBC 4.2-Konformität fehlt, müssen Sie ältere java.sql
Datums-/Uhrzeitklassen nutzen. Konvertieren Sie LocalDate
in java.sql.Date
mit java.sql.Date.valueOf(myLocalDate)
. Konvertieren Sie umgekehrt das abgerufene java.sql.Date
mit LocalDate
.java.sql.Date.toLocalDate()
wieder in
Anschauliches Beispiel (H2-Datenbank)
Das folgende Beispiel zeigt sowohl konforme als auch nicht konforme Ansätze unter Verwendung der H2-Datenbank:
<code class="language-java">// JDBC 4.2 compliant approach LocalDate today = LocalDate.now(); preparedStatement.setObject(1, today.minusDays(1)); // Non-compliant approach java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate); preparedStatement.setDate(1, mySqlDate);</code>
Nutzung des java.time Frameworks
Das java.time
-Framework (verfügbar ab Java 8) ersetzt ältere Datums-/Uhrzeitklassen. Es wird empfohlen, java.time
-Objekte direkt mit Datenbankinteraktionen zu verwenden, insbesondere mit JDBC 4.2-kompatiblen Treibern. Beachten Sie, dass viele moderne JDBC-Treiber und ORMs (wie Hibernate 5.0) native Unterstützung für java.time
-Typen bieten.
Wichtige Überlegungen
java.time.LocalDate
wird dem SQL-Datentyp DATE
zugeordnet.java.time
die Funktionalität auf Java 6 und 7.java.time
Unterstützung; ThreeTenABP passt ThreeTen-Backport für frühere Android-Versionen an.Das obige ist der detaillierte Inhalt vonWie verwende ich JDBC zum Einfügen und Abrufen von Java.time-Objekten in einer SQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!