sql >> Database >  >> RDS >> PostgreSQL

Spring JDBC + Postgres SQL + Java 8 - conversie van/naar LocalDate

Nieuwe Date &Date API-ondersteuning met JDBC wordt gedefinieerd door JEP 170:JDBC 4.2 . Postgres downloadpagina compatibiliteit met JDBC 4.2 nieuwe functies begint pas vanaf de Postgres versie 9.4, dus er zullen enkele compatibiliteitsuitdagingen opduiken bij gebruik van de nieuwe API met oudere stuurprogramma's.

Zelfs setObject(1, new java.util.Date()); wordt afgewezen door dezelfde beperking in Postgres (wat gelukkig wordt geaccepteerd door MySQL), niet alleen de nieuwe API zoals LocalDate . Sommige gedragingen zijn afhankelijk van de implementatie, dus alleen java.sql.* is vrijwel gegarandeerd (grofweg gesproken).

Wat betreft het Spring JDBC-framework, ik denk dat het negeren van het gedrag ervan werkt om het te omzeilen zonder er later spijt van te krijgen. Ik stel een iets andere aanpak voor voor wat je al deed:

  1. Verleng BeanPropertySqlParameterSource gedrag om te werken met de nieuwe datum- en tijd-API en andere klassen die zijn gekoppeld aan invoer van parameters indien nodig (ik ben niet bekend met die Spring-API).
  2. Extraheer het reeds overschreven gedrag van BeanPropertyRowMapper naar een andere klasse voor ophaalbewerkingen.
  3. Winkel alles af met een fabriekspatroon of gebruiksklasse, zodat je er niet nog een keer naar hoeft te kijken.

Op deze manier verbetert u toekomstige refactoring-mogelijkheden als API wordt ondersteund en vermindert u de hoeveelheid code die nodig is tijdens de ontwikkeling.

Je zou ook kunnen kijken naar een DAO nadert.



  1. QMYSQL-stuurprogramma niet geladen op Windows

  2. Hoe maak je een back-up van alle db door pg_dump in batchbestand - postgres

  3. op zoek naar een meer pythonische manier om toegang te krijgen tot de database

  4. Een Access-database koppelen aan SQL Server in Access 2016