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.
Acción | Primavera | Tú |
---|---|---|
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
envuelveJdbcTemplate
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
ySimpleJdbcCall
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
yStoredProcedure
, 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étodosexecute(...)
,update(...)
yfindObject(...)
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 paqueteorg.springframework.jdbc.core
contiene la claseJdbcTemplate
y sus diversas interfaces de devolución de llamada, así como muchas otras relacionadas. clases. Un subpaquete llamadoorg.springframework.jdbc.core.simple
contiene las clasesSimpleJdbcInsert
ySimpleJdbcCall
. Otro subpaquete llamadoorg.springframework.jdbc.core.namedparam
contiene la claseNamedParameterJdbcTemplate
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 clasesSimpleJdbc"
. -
datasource
: el paqueteorg.springframework.jdbc.datasource
contiene una clase auxiliar para acceder fácilmente aDataSource
y varias implementaciones simples deDataSource
que se pueden utilizar para probar y ejecutar código JDBC no modificado fuera del contenedor Java EE. Un subpaquete llamadoorg.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 paqueteorg.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 paqueteorg.springframework.jdbc.core
. -
support
: el paqueteorg.springframework.jdbc.support
contiene la funcionalidad de conversiónSQLException
y algunas clases auxiliares. Las excepciones lanzadas durante el procesamiento JDBC se traducen en excepciones definidas en el paqueteorg.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 deSQLExceptionTranslator"
.