Persistencia Jpa
Persistencia Jpa
Persistencia Jpa
INDICE
Introducción a java Persistence API
Métodos para lograr la persistencia
Data acess object dao Patron
Creando una aplicación partiendo desde un esquema de base de datos
Persistencia en nivel web
INTRODUCCION
Introducción a java Persistence API, más conocida por sus siglas JPA es el API de
persistencia desarrollada por la plataforma JavaEE.
DESARROLLO TEMÁTICO.
Java Persistence API, JPA permite la persistencia no solo en la base de datos, sino
que también en otros formatos como archivos de texto plano y XML. Las
aplicaciones empresariales necesitan recolectar, procesar, transformar y reportar
grandes cantidades de información, toda esta información debe estar almacenada
en algún lugar. Java ofrece una solución estándar denominada Java Persistence
API o JPA que facilita el trabajo al desarrollador de software ya que sirve de puente
entre el mundo de desarrollo y el mundo de las bases de datos, permitiendo una
mayor gestión de la información que es crucial al mundo de hoy para muchos
negocios.
Cada registro usa como identificar un único campo de llaves primarias, las
relaciones entre tablas se representan mediante claves foráneas o tablas joins,
respetando restricciones de integridad, toda esta terminología es propia del modelo
relacional. Sin embargo es totalmente desconocido en el modelo orientado a objetos
a objetos propio de java.
JPA trabaja a través de entities que son clases java también llamadas POJOS (Plain
Old Java Objects), no necesitan extender a ninguna otra clase o interface y se
definen a través de anotaciones en código que desarrollemos.
@entity: Sirve para indicar que una clase java es una entidad JPA.
Los proyectos que utilizan JPA requieren de una unidad de persistencia, entre las
que permite trabajar en el IDE Netbeans utilizaremos eclipse link por defecto.
Figura No. 3 Flujo de control del programa, Imagen tomada del sitio
http://theopentutorials.com/examples/java-ee/ejb3/how-to-create-ejb3-jpa-project-
in-eclipse-jboss-as-7-1/
Persistir consiste en guardar datos de un objeto java en una base datos, a través de
conectar una base datos mediante una conexión pool y una fuente de datos.
Entidad son objetos que contienen información de mapeo que viven a corto plazo
en memora y persistentemente en base de datos, Java Persistence API dispone de
una interfaz llamada entity manager, con una serie de métodos para que podamos
operar con ese conjunto de entidades. Al conjunto de entidades asociadas con los
registros de una base de datos se le llama contexto de persistencia, es importante
resaltar que la aplicación lo que maneja son entidades del contexto de persistencia,
cualquier cambio se realice en estas entidades se trasladara automáticamente a la
base de datos subyacente de forma transparente para nuestro código.
Figura No. 5 Java Server Faces, imagen generada por el autor desde el IDE
Netbeans
Para crear una entity JPA creamos un nuevo archivo y buscamos dentro de la
categoría la opción de “Persistencia” y tipo de archivo “Entity Class”.
Figura No. 6 Creación de la Entity Class, imagen generada por el autor desde el
IDE Netbeans
Data Source: JPA permite la conexión a la base de datos a través de una conexión
pool Java, agrupamiento de conexiones. Estas conexiones nunca se cierran ventaja
que tiene frente a JDBC y permiten tener la información del servidor, nombre de la
Base de datos, el usuario y clave de acceso a la base de datos.
Aquí encontraremos los Drivers para diferente fuente de datos entre los que
encontramos Microsoft, MySQL, Oracle OCI, PostgreSQL, etc. Para este ejemplo
elegimos “Java DB (Network)”, que significa Java Derby, se despliegan los driver
derbyclient.jar y el derby.jar necesarios para este ejemplo, damos clic en Next>.
Proporcionamos los datos de conexión, nombre y usuario a la base de datos.
Figura No. 11 Selección del esquema de la BD, imagen generada por el autor desde
el IDE Netbeans
Con esto damos clic en Next>, donde muestra al input de conection a la base de
dato, damos clic en Finish, luego en botón Ok.
Figura No. 12 Anotaciones de la clave primaria, imagen generada por el autor desde
el IDE Netbeans
En el siguiente cuadro se muestra las diferentes opciones que se pueden utilizar
para cada GenetationType.AUTO.
Presionamos la tecla Alt + Insert, para crear los métodos Getter and Setter, de la
clase.
Figura No.15 Selección de atributos de la clase, imagen generada por el autor desde
el IDE Netbeans
Seleccionamos los campos y damos clic en Generar, dándonos como resultado los
métodos dentro de la clase Estudiante.java
DATA ACESS OBJECT DAO:
El Data Acess Object o patrón de diseño DAO, permite resolver este problema
abstrayendo y encapsulando el acceso a datos. El DAO se encarga de manejar la
conexión con la fuente de datos permitiendo acezar obteniendo y guardando de
forma persistente los datos.
A través del DAO este realiza operaciones de forma automáticas hacia la BD, no
son necesarias las transacciones, como ejemplos podemos mencionar las
búsquedas por ID, los procesos de creación, actualizado y borrado de registros,
consultas u otras operaciones que se realicen a menudo en la aplicación.
Lógica de persistencia
clases DAO
Figura No. 16 Data Acess Object (DAO), Imagen tomada del sitio
http://www.ibm.com/developerworks/library/j-dao/
Figura No. 18 Controlador de la Entity Class, imagen generada por el autor desde
el IDE Netbeans
Verificamos en nombre del proyecto, la ubicación del paquete com.presistencia y
damos clic en Finish.
Figura No.19 Clase Controlador, imagen generada por el autor desde el IDE
Netbeans
Figura No. 20 Método créate, código creado por el autor desde el IDE Netbeans
Este método utiliza una instancia de la clase Estudiante como argumento, invocando
al método em.persist(estudiante) que pertenece a la clase getEntityManager.
Figura No. 22 Método editar, código creado por el autor desde el IDE Netbeans
Este método utiliza una instancia de la clase Estudiante como argumento, invocando
al método em.merge(estudiante) que pertenece a la clase getEntityManager.
Figura No. 23 Método destroy (Long id), código creado por el autor desde el IDE
Netbeans
Este método recibe un parámetro id, que es el campo principal de la entity para
recuperar el registro de la Base de Datos.
Figura No. 26 Esquema de la Base de Datos en Script SQL, imagen generada por
el autor
En Netbeans crearemos las entities JPA de modo automático a partir del esquema
y las aplicaciones Java Server Faces de las entidades JPA.
Figura No. 28 Parámetros de la Base de Datos, imagen generada por el autor desde
el IDE Netbeans
Ya tenemos la BD para ejecutar el esquema SQL para crear las tablas, para la
creación de las tablas desplegamos en jdbc:derby://localhost:1527/Universidad,
donde está la base de datos, damos clic en tables con el botón derecho del mouse
y seleccionamos créate table….
Adicionamos cada table de nuestra base datos para nuestro ejercicio vamos a crear
las tablas estudiantes, materia, nota, como muestra la figura.
Figura No. 29 Estructura de la Base de Datos, imagen generada por el autor desde
el IDE Netbeans
Para crear las entities de la base de datos vamos a crear un proyecto web
application, para esto creamos nuevo proyecto
Figura No. 31 Frameworks JavaServer Faces, imagen generada por el autor desde
el IDE Netbeans
Para crear una entity JPA creamos un nuevo archivo y buscamos dentro de la
categoría la opción de “Persistencia” y tipo de archivo “Entity Class”.
Clic en botón Next>, asignamos nombre a la clase “Estudiante”, y creamos un
paquete llamado com.persistencia, verificamos que este seleccionado la opción
“Create Persistence Unit”, parra cada entity class se crea una unidad de persistencia
bajo un archivo xmly damos clic en Next>.
Crear las entities de la base de datos creamos un archivo nuevo, clic en file –> New
File, seleccionamos la categoria “Persistence” y en tipos de archivos “Entity Classes
from Database”. Clic en Next>.
Figura No. 32 Creando archivo entity Classes from Database, imagen generada
por el autor desde el IDE Netbeans
Escogemos la opción de “New Data Sourde” de la ventana Data Source para asignar
la fuente de la base de datos.
Figura No. 33 Nueva fuente de datos, imagen generada por el autor desde el IDE
Netbeans
Asignamos un nombre al JNDI Name: y seleccionamos la conexión a la Base de
Datos.
Figura No. 34 Selección del jdbc:derby, imagen generada por el autor desde el IDE
Netbeans
Nos carga la tablas que integran la base de datos, las cuales seleccionamos y add
all >>. Y clic en Next>>.
Figura No. 35 Selección tablas de la base de datos, imagen generada por el autor
desde el IDE Netbeans
En la ventana siguiente nos permite cambiar el nombre de las clases de cada tabla
de la base datos, las dejamos por defecto, creamos un paquete para las clases.
“com.jpa”. clic en Next>> y Finish.
Figura No. 36 Clases Entity, imagen generada por el autor desde el IDE Netbeans
Podemos observar en el proyecto la creación de las entities para cada una de las
tablas que conforma la base de datos.
Figura No. 37 Proyecto con lista de clases de las entidades de la tabla, imagen
generada por el autor desde el IDE Netbeans
Ahora crearemos las aplicaciones JSF para cada una de las entidades JPA.
Para esto creamos un nuevo archivo file -> New file, seleccionamos la categoria
JavaServer Faces y en tipos de archivos seleccionamos JSF Pages from Entity
Classes.
Figura No. 38 Creación de las Pages from Entity Classes, imagen generada por el
autor desde el IDE Netbeans
En la siguiente ventana nos permite seleccionar las entities para la creación de las
páginas.
Figura No. 39 Selección de las entities JPA, imagen generada por el autor desde el
IDE Netbeans
Verificamos el nombre del proyecto y podemos cambiar los paquetes para los
Session Bean Package y las Classes Package de la aplicación, las Sessions Bean
es el encargado de la controlar la lógico del modelo con la base de datos. Y clic en
Finish.
Figura No. 40 Definición del package de la Sessión Bean y las Classes Package,
imagen generada por el autor desde el IDE Netbeans
Ya tenemos nuestra aplicación con los archivos generados de cada una las entities
JPA, los controladores, las páginas web para cada entidad (Create.xhtml, Edit.xhtml,
List.xhtml, View.xhtml). Aplicación CRUD, la cual podemos ejecutar para ver su
funcionamiento.