Conexión con la base de datos desde Java

Código de conexión con la base de datos

Previamente hay que añadir librerías:

Puedes añadir las librerías necesarias desde el menú contextual de la carpeta Libraries, seleccionando la opción Add Library.

Screen Shot 2017 04 05 at 21.35.00 320f0

 Elige la librería correspondiente al tipo de base de datos. En este caso, Java DB Driver.

Screen Shot 2017 04 05 at 21.36.08 9580e

 La carpeta Libraries debería quedar ahora así:

Screen Shot 2017 04 05 at 21.37.49 c4e46 

Y ya se podrá ejecutar sin problemas el código de conexión con la base de datos.


La conexión con una base de datos usando JPA se realiza utilizando un objeto de la clase EntityManagerFactory que puede ser obtenido a partir de la llamada al método Persistence.createEntityManagerFactory al que se le indicará por parámetro el nombre de la unidad de persistencia que contiene los datos de conexión (en este caso era AgendaContactosPU, como vimos anteriormente en el archivo persistence.xml).

A partir de ese objeto se podrá crear otro de la clase EntityManager que será el que se utilice posteriormente para realizar las operaciones con la base datos.

Por tanto, para realizar la conexión a la base de datos se deberá indicar un código como el siguiente:


import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class AgendaContactos {

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("AgendaContactosPU"); // Comprobar nombre de la PU
        EntityManager em = emf.createEntityManager();
    }

}


Me parece que hay que activar primero, en persistence.xml, la opción create, si no da error.


Cerrar la conexión

Con el fin de asegurar que los datos terminen de almacenarse correctamente y dejar las cachés en un estado correcto, una vez finalizadas todas las operaciones que vayan a realizar sobre la base de datos, se debe cerrar la conexión con ella. Utiliza los métodos close() de EntityManagerFactory y EntityManager, y para el caso del motor de base de datos Java DB (Derby) ejecutado de forma embedida en la aplicación (sin usar un servidor), se debe asegurar la terminación de la ejecución de la instancia del gestor de base de datos Derby lanzando una conexión con el parámetro shutdown=true. Esa instrucción se puede realizar expresamente sobre la base de datos abierta ("jdbc:derby:BDAgendaContactos;shutdown=true") o cerrar completamente la ejecución de Derby para cualquier base de datos abierta por la misma instancia del motor ("jdbc:derby:;shutdown=true").

em.close(); 
emf.close(); 
try { 
    DriverManager.getConnection("jdbc:derby:BDAgendaContactos;shutdown=true"); 
} catch (SQLException ex) { 
}

La llamada al método DriverManager.getConnection requiere estar encerrado obligatoriamente en una cláusula try-catch, e incluso en este caso de cerrar la ejecución de Derby, siempre se genera un error que se puede obviar, por lo que se deja vacío el bloque catch.


Código completo de la conexión y desconexión con la base de datos

import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class AgendaContactos {

    public static void main(String[] args) {
        // Conectar con la base de datos
        Map<String, String> emfProperties = new HashMap<String, String>();
        emfProperties.put("javax.persistence.schema-generation.database.action", "create");
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("AgendaContactosPU", emfProperties);
        EntityManager em = emf.createEntityManager();

        // REALIZAR AQUÍ LAS OPERACIONES SOBRE LA BASE DE DATOS
        
        // Cerrar la conexión con la base de datos
        em.close(); 
        emf.close(); 
        try { 
            DriverManager.getConnection("jdbc:derby:BDAgendaContactos;shutdown=true"); 
        } catch (SQLException ex) { 
        }
    }
    
}

Comentarios

Entradas populares de este blog

Operaciones sobre la base de datos

Empezando a crear una Base de Datos.