2. Conexion y uso de bases de datos en lenguaje Java

El acceso a bases de datos desde Java se realiza mediante el estándar JDBC (Java data base conectivity), que permite un acceso uniforme a las bases de datos independientemente del SGBD. De esta manera, las aplicaciones escritas en Java no necesitan conocer las especificaciones de un SGBD en particular, basta con comprender el funcionamiento de JDBC. Cada SGBD que quiera utilizarse con JDBC debe contar con un adaptador o controlador.

La estructura de JDBC se puede expresar gráficamente como sigue:

 

    

 

Hay drivers para la mayoría de SGBD, tanto de software libre como de código abierto. Además, hay drivers para trabajar con otros tipos de datos (hojas de cálculo, ficheros de texto, etc.) como si fueran SGBD sobre los que podemos realizar consultas SQL.

Para usar la API JDBC con un SGBD en particular, necesitaremos el driver concreto del motor de base de datos, que media entre la tecnología JDBC y la base de datos. Dependiendo de múltiples factores, el driver puede estar escrito completamente en Java, o bien haber usado métodos JNI (Java native interface) para interactuar con otros lenguajes o sistemas.

La última versión de desarrollo de la API JDBC proporciona también un puente para conectarse a SGBD que dispongan de drivers ODBC (open database connectivity). Este estándar es muy común sobre todo en entornos Microsoft y sólo debería usarse si no disponemos del driver nativo para nuestro SGBD.

En el caso concreto de MySQL y PostgreSQL, no tendremos ningún problema en encontrar los drivers JDBC:

•    MySQL Connector/J: es el driver oficial para MySQL y se distribuye bajo licencia GPL. Es un driver nativo escrito completamente en Java.

•    JDBC para PostgreSQL: es el driver oficial para PostgreSQL y se distribuye bajo licencia BSD. Es un driver nativo escrito completamente en Java.


Tanto uno como otro, en su distribución en formato binario, consisten en un fichero .jar (Java archive) que debemos situar en el CLASSPATH de nuestro programa para poder incluir sus clases.

Java incluye la posibilidad de cargar clases de forma dinámica. Éste es el caso de los controladores de bases de datos: antes de realizar cualquier interacción con las clases de JDBC, es preciso registrar el controlador. Esta tarea se realiza con el siguiente código:

 
String controlador = "com.mysql.jdbc.Driver" Class.forName(controlador).newInstance();

 


o bien:


Class.forName("org.postgresql.Driver");



A partir de este momento, JDBC está capacitado para interactuar con MySQL o PostgreSQL.