sql >> Base de Datos >  >> RDS >> PostgreSQL

Spring JDBC + Postgres SQL + Java 8 - conversión de/a LocalDate

La compatibilidad con la API de nueva fecha y fecha con JDBC está definida por JEP 170:JDBC 4.2 . Postgres página de descarga la compatibilidad con las nuevas funciones de JDBC 4.2 solo comienza a partir de la versión 9.4 de Postgres, por lo que aparecerán algunos problemas de compatibilidad al usar la nueva API con controladores más antiguos.

Incluso setObject(1, new java.util.Date()); es rechazado por la misma restricción en Postgres (que MySQL acepta felizmente), no solo la nueva API como LocalDate . Algunos comportamientos dependerán de la implementación, por lo que solo java.sql.* está prácticamente garantizado (en términos generales).

En cuanto al marco Spring JDBC, creo que anular su comportamiento funciona para sortearlo sin arrepentirse más tarde. Sugiero un enfoque ligeramente diferente para lo que ya hizo:

  1. Extender BeanPropertySqlParameterSource comportamiento para trabajar con la nueva API de fecha y hora, y otras clases asociadas con la entrada de parámetros si es necesario (no estoy familiarizado con esa API de Spring).
  2. Extraiga el comportamiento ya anulado de BeanPropertyRowMapper a otra clase para obtener operaciones.
  3. Envuélvelo todo con un patrón de fábrica o una clase de utilidad para que no tengas que volver a mirarlo.

De esta manera, mejorará las capacidades de refactorización futuras si la API es compatible y reduce la cantidad de código necesario durante el desarrollo.

También puede consultar algunos DAO enfoques.