Qué driver JDBC usar para cada versión de Oracle Database

3 comentarios

Una de mis fuentes favoritas de expedientes X en el desarrollo aplicaciones es la integración con base de datos en entornos de pruebas y producción. Me ha pasado de todo, uno de los peores fue un firewall que mataba en silencio conexiones inactivas. Pero la gran mayoría han sido problemas aparentemente sin explicación por culpa de la versión del driver JDBC utilizado. Saber qué driver JDBC instalar en tu servidor de aplicaciones no debe tomarse a la ligera.

En las grandes organizaciones es bastante habitual encontrarse con Oracles 8 y 9, cuyas inversiones aún están amortizándose. No es que sea una queja, son robustas bases de datos con unas fantásticas herramientas.
A la hora de definir el entorno de desarrollo preguntas qué versión de Oracle y de Java usan bajo qué versiones de Oracle y Java debe funcionar la aplicación, te bajas el driver JDBC thin adecuado para las versiones mínimas (si te lo pasan mucho mejor!) y ala, a trabajar. [ACTUALIZADO 28082008]

Ésta es la teoría. A la hora de ponerla en práctica, te vas a la página para descargar los drivers JDBC Oracle y te encuentras con que existe un enlace para cada cada gran versión de Oracle Database. La impresión que te llevas es que si tienes, pej un Oracle 9.2.0.6, tienes que seleccionar el enlace de Oracle 9.2.x drivers. Bueno, esto es correcto pero sólo en parte.

Si consultamos la matriz de interoperabilid entre drivers y database veremos que todas las versiones de los drivers JDBC funcionan para todas las versiones de Database desde la versión 9.2.x. Para más información, en especial para versiones anteriores, se puede consultar la FAQ de JDBC.

Entonces, ¿por qué tanta versión?

Las diferencias entre las versiones del driver JDBC radican principalmente en las funcionalidades JDBC que implementan y en las versiones Java bajo las que funcionan.

Así por ejemplo, la versión 11 del driver JDBC thin Oracle sólo está disponible para Java 5 y 6, si quieres usar auto-generated keys tendrás que usar una versión 10 o superior y si quieres tener soporte completo para tipos LOB (CLOBs y BLOBs) olvídate del classes12.jar.

Lo más recomendable es utilizar la última versión del driver JDBC compatible con tu versión de Java.

Quiero creer

Hasta aquí la parte sencilla. Las sorpresas vendrán cuando tu aplicación pase de tu entorno controlado de desarrollo a uno de pruebas del cliente y empiecen a sucederse los expedientes X con tareas de acceso a la base de datos.

Mi consejo es comprobar la versión del driver JDBC instalada en el servidor de pruebas. Si es una versión antediluviana seguramente ya tienes la causa. La solución es convencer al responsable de Sistemas del cliente de actualizar el driver JDBC pero esto será una dura prueba para tus habilidades de negociación...

Lectura recomendada: Spring in Action 2

3 comentarios

Uno de mis propósitos profesionales para este año 2008 era conocer a fondo Spring y a estas alturas de año puedo decir que lo he cumplido. A día de hoy ya son 2 los proyectos que hemos iniciado usando Spring como framework principal. Sin duda ha sido todo un acierto. Podría dedicar muchas líneas a elogiar las virtudes del framework, pero sería repetir lo que puede encontrarse en internet y en literatura sin problemas.

Sí quiero aprovechar para recomendar uno de los libros que leí durante mi fase de autoformación y que para mí está unos puntos por encima del resto de literatura sobre Spring. Se trata de Spring in Action Second Edition, de Craig Walls. Es un libro muy completo, prueba de ello son sus más de 700 páginas y el tiempo que ha pasado en mi mesita de noche sin volverse un tostón. Sin duda se hace muy ameno de leer, el inglés es sencillo, los ejemplos son muy didácticos y el estilo es muy alegre.

Leyéndolo se puede aprender sin mucho esfuerzo lo que son las bases de Spring, la inyección de dependencias y la programación orientada a aspectos, además de otros temas imprescindibles en cualquier libro de Spring, como la integración con bases de datos (JDBC, JPA, Hibernate, iBATIS, transacciones y cachés), cómo usar EJBs, JNDI, JMX y JMS con Spring, integración con los frameworks web Struts, Struts2, Tapestry y JSF, planificación de tareas con Quartz, Testing y por supuesto su propio módulo web Spring MVC y Spring Web Flow.

Hasta aquí lo que puede encontrarse más o menos, mejor o peor contado, con más profundidad o menos en cualquier otro libro de Spring. Todo es cuestión de gustos. Pero Spring in Action 2 además incluye capítulos para los nuevos proyectos de Spring Web Services y Security (Acegi Security) para los que no es tan fácil encontrar documentación de calidad. Y también un capítulo no muy común sobre cómo usar DWR en Spring que me vino de maravilla al ser el framework Ajax con el que trabajamos.

Sin duda un gran libro para conocer Spring, todo está muy bien explicado y con unos ejemplos estupendos. Y para los más curiosos, desde la web se pueden descargar 2 capítulos gratis.