PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Spring JDBC + Postgres SQL + Java 8 - Konvertierung von/nach LocalDate

Neue Datums- und Datums-API-Unterstützung mit JDBC wird durch JEP 170:JDBC 4.2 definiert . Postgres Download-Seite Die Kompatibilität mit den neuen Funktionen von JDBC 4.2 beginnt erst ab der Postgres-Version 9.4, daher treten bei Verwendung der neuen API mit älteren Treibern einige Kompatibilitätsprobleme auf.

Sogar setObject(1, new java.util.Date()); wird von der gleichen Einschränkung in Postgres abgelehnt (die von MySQL gerne akzeptiert wird), nicht nur von der neuen API wie LocalDate . Einige Verhaltensweisen sind implementierungsabhängig, also nur java.sql.* ist so ziemlich garantiert (grob gesagt).

Was das Spring JDBC-Framework betrifft, denke ich, dass das Überschreiben seines Verhaltens funktioniert, um es zu umgehen, ohne es später zu bereuen. Ich schlage einen etwas anderen Ansatz für das vor, was Sie bereits getan haben:

  1. Erweitern Sie BeanPropertySqlParameterSource Verhalten, um mit der neuen Datums- und Uhrzeit-API und anderen Klassen zu arbeiten, die bei Bedarf mit Parametereingaben verbunden sind (ich bin mit dieser Spring-API nicht vertraut).
  2. Extrahieren Sie das bereits überschriebene Verhalten von BeanPropertyRowMapper zu einer anderen Klasse zum Abrufen von Operationen.
  3. Schließen Sie alles mit einem Factory-Muster oder einer Utility-Klasse zusammen, damit Sie es sich nicht noch einmal ansehen müssen.

Auf diese Weise verbessern Sie zukünftige Refactoring-Funktionen, wenn die API unterstützt wird, und reduzieren die Menge an Code, die während der Entwicklung benötigt wird.

Sie können sich auch einige DAO ansehen Ansätze.