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.

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

La carpeta Libraries debería quedar ahora así:
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
Publicar un comentario