Bases de datos:
CREATE DATABASE CLS; SHOW DATABASES; USE CLS;
Tablas:
SHOW TABLES;
JDBC
JDBC es una biblioteca de Java que permite la conexin a bases de datos relacionales. JDBC se utiliza mediante un driver que al cargarse permite que un programa Java se conecte a un servidor de bases de datos como un usuario determinado JDBC proporciona clases para representar las conexiones, consultas SQL y resultados de las mismas.
JDBC, II
Un programa Java que utiliza JDBC hace lo siguiente:
Carga el driver JDBC (la clase que gestiona el acceso a bases de datos). Crea una conexin a la base de datos. Crea una consulta en base a cdigo SQL. Ejecuta la consulta, obteniendo un conjunto de resultados (o void). Itera si es necesario sobre los resultados. Cierra la conexin.
JPA: Consultas
El Lenguaje de Consultas de Persistencia de Java (JPQL) permite especificar consultas a bases de datos relacionales en forma parecida a SQL desde un programa Java.
JPA: Consultas, II
Los objetos que implementan la interfaz TypedQuery<?> de JPA representan consultas del tipo anterior. Los objetos de la clase anterior que representan consultas que devuelven valores (tipo SELECT) al ejecutar la consultas devuelven listas de objetos.
Consultas en JPQL
SELECT p FROM Persona p
Persona es una entidad (clase) p representa una variable Java de la clase El resultado de la ejecucin de la consulta es una lista de objetos de la clase
Consultas en JPQL, II
Cuestiones pendientes de estudiar:
Programacin de consultas Acceso a resultados devueltos por las consultas Definicin de entidades Sincronizacin
JPA: EntityManager
Para crear y ejecutar consultas mediante JPA es necesario crear antes un objeto que implementa la interfaz EntityManager, que se ocupa de la gestin de los datos y de objetos que los representan. A continuacin veremos cmo se utilizan y cmo se crean los EntityManagers. Tras esto veremos cmo se definen las clases de objetos que representan registros de una base de datos.
Recursos en Java EE
Los servidores de aplicaciones web permiten el acceso a recursos externos como sistemas de gestin de bases de datos o de colas de mensajes. El servidor registra los recursos, asocindoles un nombre accesible a travs del protocolo Java JNDI. El uso de JNDI es transparente. La gestin de recursos se puede hacer desde NetBeans o desde la aplicacin de administracin del servidor de aplicaciones.
Clases entidad
Son clases asociadas a tablas (una o varias) en una base de datos. Sus objetos se asocian a registros. Se declaran mediante la anotacin @Entity. La clave primaria se indica mediante la anotacin @Id (obligatorio). @Entity public class Person { @Id int id; }
Clases entidad, II
Si la tabla primaria tiene un nombre diferente de la clase, ste se especifica mediante la anotacin @Table(name). NetBeans permite la opcin de crear la tabla (si no existe) al compilar el cdigo de la clase
Ejercicio
[DBPERS0] Desarrollar una aplicacin web que permita ver la lista de personas incluidas en una base de datos de personas sencilla, como la mencionada en los ejemplos anteriores.
Ejercicio
[DBPERS1] Desarrollar una aplicacin web que permita gestionar a travs de Internet una base de datos de personas sencilla, como la mencionada en los ejemplos anteriores, permitiendo dar de alta y de baja a personas y modificar sus datos.
Ejercicios voluntarios
[DBFILE] Completar los ejercicios de los temas anteriores que utilizan ficheros (PyCE1, FAV, PyCE2, SWJSF, SWCC, AJAXPERS) para guardar sus datos sustituyendo los ficheros por una base de datos.
SELECT
Managed (em)
Detached
Detached
New new
Detached
New new
em.merge(o) [objBD]
Detached em.close(o)
New new
em.merge(o) [objBD]
Detached em.close(o)
New new
em.merge(o) [objBD]
Detached em.close(o)
Entidades:
Persona(@Id int id; String nombre; @ManyToOne Empresa trabajo) // Propietario Empresa(@Id int id; String nombre)
Se podra haber hecho propietaria a la entidad Persona. La eleccin se debe basar en criterios de eficiencia.
Consultas y relaciones
Ejemplos: Empleados de Renfe select p from Empresa e JOIN e.clientes p where e.name=Renfe (lista de Person) Para poder hacer una consulta que atraviesa una relacin, la relacin tiene que estar definida (en la clase de entidades persistentes) en la direccin en la que es atravesada.
Transacciones en SQL
Una transaccin es una secuencia de instrucciones SQL que se ejecutan provisionalmente, pudiendo anularse en cualquier momento o consolidarse al final. Por ejemplo, un movimiento en una cuenta corriente puede realizarse mediante una transaccin que comprueba que el usuario ha actuado correctamente en el cajero automtico.
Transacciones en SQL, II
En una sesin de ejecucin de instrucciones en un Sistema de Gestin de Bases de Datos cualquier instruccin normal comienza una transaccin si no hay una comenzada. La instruccin COMMIT termina una transaccin dando por buenos los cambios. La instruccin ROLLBACK termina una transaccin deshaciendo los cambios.
Transacciones en Java EE
Java EE permite definir transacciones que abarcan la ejecucin de mtodos, de manera que si se produce un error tanto en el servidor de bases de datos como en la mquina virtual se realizan acciones de recuperacin a un estado seguro. Las transacciones son un tema optativo en CLS y se estudiarn junto con las Enterprise Java Beans (EJB).