Conectar java con mysql

De ChuWiki
Saltar a: navegación, buscar

Contenido


Conexión de bajo nivel

Para poder conectar java con una base de datos (MySQL en este ejemplo), necesitamos el Driver o Connector de la base de datos. Este Driver puede habitualmente bajarse de la página web de la base de datos. Por ejemplo, el de MySQL se puede bajar de http://dev.mysql.com/downloads/connector/j/5.0.html

En el zip que nos bajamos hay dentro un java-mysql-connector-5.0.5-bin.jar que es el que tiene dentro del Driver. Debemos poner este jar accesible a nuestro proyecto java:

  • Poniéndolo en $JAVA_HOME/lib/ext/ y así será accesible por defecto para siempre. Esta opción no es aconsejable, puesto que este jar estará disponible para todas las aplicaciones que corramos en el ordenador, lo necesiten o no. Si no somos cuidadosos, podemos tener conflictos entre distintas versiones o con otros jar que pongamos que ahí.
  • Poniéndolo en el CLASSPATH
  • Añadiéndolo a nuestro proyecto del IDE que usemos (por ejemplo eclipse.

Una vez accesible, para conectarse a la base de datos hacemos esto

import java.sql.Connection;
import java.sql.DriverManager;
...
try
{
   Class.forName("com.mysql.jdbc.Driver");
   Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost/agenda", "root", "LA_PASSWORD");
   ...


Caso específico de MySQL

Si la conexión va a ser siempre con una base de datos MySQL, tenemos una forma más sencilla de establecer la conexión, usando la clase MysqlDataSource. Esta clase viene dentro del driver que nos hemos bajado y al ser específica de MySQL, no debemos proporcionarle cosas como el driver, además de que gestiona mejor la conexión con MySQL que una clase genérica. Para usar esta clase, pondremos:

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
...
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("usuario");
dataSource.setPassword("password");
dataSource.setDatabaseName("dedicaciones");
dataSource.setServerName("localhost");

Connection conexion = dataSource.getConnection();
...

Como vemos, basta instanciar la clase, pasarle usuario, password, base de datos y servidor donde corre MySQL. Una vez hecho, basta con pedirle la Connection cuando la necesitemos.


Pool de conexiones

Si abrimos las conexiones directamente con la base de datos, tenemos dos problemas que pueden ser importantes en aplicaciones de cierto tamaño:

  • Abrir y cerrar conexiones con base de datos suele ser costoso. Por ello no es conveniente abrir una conexión, realizar una operación y cerrarla para luego repetirlo poco después. Suele ser mejor idea dejar las conexiones abiertas y cerrarlas al final.
  • Dos hilos no pueden trabajar simultáneamente sobre una conexión. Si tenemos varios hilos y sólo abrimos una conexión compartida, debemos acordarnos de usar synchronized con la conexión, para evitar que ambos hilos accedan simultáneamente.

Todo esto nos lo podemos ahorrar si usamos un Pool de conexiones

Enlaces externos