sql >> Databasteknik >  >> RDS >> PostgreSQL

Spring JDBC + Postgres SQL + Java 8 - konvertering från/till LocalDate

Nytt Date &Date API-stöd med JDBC definieras av JEP 170:JDBC 4.2 . Postgres nedladdningssida kompatibilitet med JDBC 4.2 nya funktioner startar först från och med Postgres version 9.4, så vissa kompatibilitetsutmaningar kommer att dyka upp med det nya API:et med äldre drivrutiner.

Även setObject(1, new java.util.Date()); avvisas av samma begränsning i Postgres (vilket med glädje accepteras av MySQL), inte bara det nya API:et som LocalDate . Vissa beteenden kommer att vara implementeringsberoende, så endast java.sql.* garanteras i stort sett (ungefär).

När det gäller Spring JDBC-ramverket, tror jag att överstyrning av dess beteende fungerar för att komma runt det utan att ångra det senare. Jag föreslår ett lite annorlunda tillvägagångssätt för det du redan har gjort:

  1. Utöka BeanPropertySqlParameterSource beteende för att fungera med det nya datum- och tid-API:et och andra klasser associerade med inmatning av parametrar om det behövs (jag är inte bekant med Spring API).
  2. Extrahera det redan åsidosatta beteendet för BeanPropertyRowMapper till en annan klass för hämtning.
  3. Slå ihop det hela med ett fabriksmönster eller verktygsklass så att du inte behöver titta på det igen.

På så sätt förbättrar du framtida refaktoreringsmöjligheter om API får stöd och minskar mängden kod som behövs under utvecklingen.

Du kan också titta på några DAO närmar sig.



  1. START TRANSACTION inuti BEGIN ... END kontext eller utanför och LOOP-syntax

  2. Ange en unik begränsning endast när ett fält är null

  3. Mysql-anslutning Tomcat 7 på Openshift

  4. Lägger till dict-objekt till postgresql