Los beneficios de la abstracción JDBC de Spring Framework quizás se demuestren mejor a través de la secuencia de pasos que se describen en la siguiente tabla. La tabla muestra qué tareas maneja Spring y cuáles tienes que resolver.

Tabla 4. JDBC en primavera: ¿quién hace qué?
Acción Primavera

Definición de parámetros de conexión.

X

Abrir una conexión.

X

Configuración de una declaración SQL.

X

Declarar parámetros y proporcionar valores de parámetros

X

Preparación y ejecución de la declaración.

X

Configure un bucle para recorrer los resultados (si los hay).

X

Ejecutar el trabajo para cada iteración.

X

Manejar cualquier excepción.

X

Trabajar con transacciones.

X

Cerrar la conexión, la declaración y el conjunto de resultados.

X

Spring Framework se encarga de todas las tareas de bajo nivel que hacen que trabajar con la API JDVBC sea tan tedioso.

Elegir un método para acceder a una base de datos JDBC

Puede elegir entre varios enfoques para formar la base para acceder a una base de datos JDBC. Además de las tres opciones de plantilla JdbcTemplate, un nuevo enfoque que utiliza SimpleJdbcInsert y SimpleJdbcCall optimiza los metadatos de la base de datos y utiliza un estilo de objeto RDBMS más orientado a objetos. un enfoque similar al marco de consulta JDO. Una vez que comience a utilizar uno de estos enfoques, aún puede mezclarlos y combinarlos para aprovechar una característica del otro enfoque. Todos los enfoques requieren un controlador compatible con JDBC 2.0 y algunas funciones avanzadas requieren un controlador JDBC 3.0.

  • JdbcTemplate es el enfoque clásico y más popular de JDBC en Spring. Este enfoque de "bajo nivel" y todos los demás utilizan JdbcTemplate detrás de escena.

  • NamedParameterJdbcTemplate envuelve JdbcTemplate para proporcionar parámetros con nombre en lugar de los marcadores de posición ? tradicionales con JDBC. Este enfoque proporciona una mejor documentación y facilidad de uso si tiene varios parámetros para una declaración SQL.

  • SimpleJdbcInsert y SimpleJdbcCall optimizan los metadatos de la base de datos para limitar la cantidad de configuración requerida. Este enfoque simplifica la codificación de modo que todo lo que tiene que hacer es especificar el nombre de la tabla o procedimiento y proporcionar un mapa de parámetros correspondientes a los nombres de las columnas. Esto sólo funcionará si la base de datos proporciona metadatos adecuados. Si la base de datos no proporciona estos metadatos, debe proporcionar una configuración de parámetros explícita.

  • Los objetos RDBMS, incluidos MappingSqlQuery, SqlUpdate y StoredProcedure, requieren la creación de objetos reutilizables y seguros para subprocesos durante la inicialización de la capa de acceso a datos. . Este enfoque se basa en JDO Query, donde usted define una cadena de consulta, declara parámetros y compila la consulta. Una vez hecho esto, los métodos execute(...​), update(...​) y findObject(...​) se pueden llamar múltiples veces veces con diferentes valores de parámetros.

Jerarquía de paquetes

La estructura de abstracción JDBC en Spring Framework consta de cuatro paquetes diferentes:

  • core: el paquete org.springframework.jdbc.core contiene la clase JdbcTemplate y sus diversas interfaces de devolución de llamada, así como muchas otras relacionadas. clases. Un subpaquete llamado org.springframework.jdbc.core.simple contiene las clases SimpleJdbcInsert y SimpleJdbcCall. Otro subpaquete llamado org.springframework.jdbc.core.namedparam contiene la clase NamedParameterJdbcTemplate y sus clases auxiliares asociadas. Consulte "Uso de las clases principales de JDBC para administrar JDBC básico y el manejo de errores", "Operaciones por lotes JDBC" y "Simplificando las operaciones JDBC con clases SimpleJdbc".

  • datasource: el paquete org.springframework.jdbc.datasource contiene una clase auxiliar para acceder fácilmente a DataSource y varias implementaciones simples de DataSource que se pueden utilizar para probar y ejecutar código JDBC no modificado fuera del contenedor Java EE. Un subpaquete llamado org.springfamework.jdbc.datasource.embedded proporciona soporte para crear bases de datos integradas utilizando motores de bases de datos Java como HSQL, H2 y Derby. Consulte "Administración de conexiones de bases de datos" y "Soporte para bases de datos integradas".

  • object: el paquete org.springframework.jdbc.object contiene clases que exponen consultas, actualizaciones y procedimientos almacenados de RDBMS como objetos reutilizables y seguros para subprocesos. Consulte "Modelado de operaciones JDBC como objetos Java". Este enfoque se basa en JDO, aunque los objetos devueltos por las consultas están naturalmente desacoplados de la base de datos. Este nivel superior de abstracción JDBC depende del nivel inferior de abstracción en el paquete org.springframework.jdbc.core.

  • support: el paquete org.springframework.jdbc.support contiene la funcionalidad de conversión SQLException y algunas clases auxiliares. Las excepciones lanzadas durante el procesamiento JDBC se traducen en excepciones definidas en el paquete org.springframework.dao. Esto significa que el código que utiliza la capa de abstracción JDBC en Spring no necesita implementar un manejo de errores específico de JDBC o RDBMS. Todas las excepciones convertidas no están marcadas, lo que le permite detectar excepciones que se pueden recuperar permitiendo que otras excepciones se propaguen al código de llamada. Consulte "Uso de SQLExceptionTranslator".