Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Regional Cauca
- El nombre de proyecto en nuestro caso será “Persona”, y se elige el espacio de trabajo en donde se guardará
el proyecto. Adicionalmente vamos a decir que no se cree la clase principal, y damos click en finalizar:
o Dentro de la ventana que se despliega escribimos el nombre “ds_persona” y elegimos crear una
nueva conexión a base de datos
De la ventana elegimos primero el driver del motor de base de datos con el que estamos
trabajando, en nuestro caso PostgreSQL y damos click en siguiente. Para los diferentes
motores de bases de datos los pasos que se narran a continuación son similares.
Llenamos los datos que se piden de acuerdo a la ubicación del servidor, el nombre de la base
de datos y el usuario y contraseña del motor que estemos usando. Probamos la conexión.
o Al finalizar el paso anterior se retorna a la ventana de Data Source con la conexión ya realizada.
Damos Click en OK.
o Con lo anterior, retornamos a la ventana de creación de las clases de entidad. Donde ahora podemos
ver que se listan las tablas que existen en la base de datos y las cuales puedo mapear (crear clases
Oscar Viveros Egas. ohviveros@misena.edu.co
Centro de Comercio y Servicios
Regional Cauca
que las representen). Agregamos las tablas al lado derecho con el botón (Add All >>) y damos click
en siguiente.
o El paquete en el que se crearán las entidades corresponde al acceso a datos, y especificamos que se
cree la unidad de persistencia como aparece en la imagen. Damos click en siguiente.
o De la última ventana elegimos las opciones como se especifica en la figura. Entre las primeras
opciones se puede elegir “Eager” o “Lazy”, donde la primera significa que en una consulta se
obtendría la información de la tabla consultada y de aquellas que están relacionadas a esta, y el caso
contrario es que solo se obtiene la información de la tabla solicitada. En el segundo menú
despegable elegimos trabajar con Listas. El resto de las opciones las dejamos como aparecen por
defecto. Damos click en finalizar.
- Cuando se tiene una base de datos con más de una tabla y existe algún tipo de relación entre estas, es
recomendable que se borren las líneas de código que tienen relación uno a muchos en cada una de las
clases de entidad en las que aparezcan, dichas líneas se muestra a continuación:
- Adicionalmente, en este proceso se ha creado el archivo “persistence.xml”, el cual contienen los parámetros
que nos permiten conectar a la base de datos. El nombre del archivo persistence.xml por defecto será el
mismo nombre del proyecto seguido de las letras PU, por ejemplo:
Una vez se han creado las entidades, que corresponden a la primera capa de nuestra aplicación (accesoDatos o
modelo), debemos continuar con la segunda capa (negocio o controlador). En esta capa se crean las clases que
permiten realizar el CRUD sobre la base de datos, estas clases se llaman JpaController.
- Para esto, sobre el proyecto damos click dercho y elegimos la opción new/JPA Controller from Entity Classes.
En caso en que no se encuentre en la lista, debemos elegir la opción “other” y la categoría “persistence”.
- A continuación nos aparecerá una ventana con todas las entidades a las que se pueden crear sus respectivos
JpaControllers. Para esto, pasamos todas las entidades al lado derecho con “Add All >>” y damos click en
siguiente. Ahora, elegimos el nombre del paquete (negocio o control) y damos click en finalizar.
Si la creación de estos controladores se hizo de forma correcta nos deben haber aparecido en nuestro
proyecto dos paquetes, uno con 3 clases que controlan Excepciones y otro con los controladores de cada
entidad que hayamos definido, como se muestra a continuación:
- Las clases JpaControllers contienen los métodos que nos permiten hacer un CRUD. Para poder entender
mejor estos métodos, vamos a borrar las líneas de código desde el método “créate” hasta el final de la clase,
de tal forma que la clase quede así:
- Lo primero que vamos a hacer con esta clase, al igual que a todos los JpaControllers es crearles un
constructor (click derecho dentro de la clase/insertar código/ constructor) y dentro de ellos agregar una
línea de código como se muestra:
Para poder administrar las entidades requerimos un administrador (EntityManager), pero este se obtiene a
partir de una fábrica de administradores (EntityManagerFactory), y finalmente la fábrica debe corresponder
con la base de datos que queremos gestionar, por lo cual usamos la Unidad de Persistencia que se creó en el
paso 3 (PersonaPU).
- A partir de ahora creamos los métodos que nos permiten hacer un CRUD. Los métodos para agregar,
actualizar y eliminar son como se muestra a continuación:
o Guardar
o Actualizar
o Eliminar
Primero creamos el administrador de entidades para la gestión (EntityManager), luego iniciamos una
transacción. Con la transacción abierta escribimos la orden que queremos efectuar (guardar, actualizar o
eliminar), después de esto debemos confirmar la transacción y finalmente cerramos el administrador de
entidades.
Como se puede ver en el código anterior, los métodos contienen prácticamente las mismas líneas de código.
Las diferencias están en:
Guardar persist
Actualizar merge
Eliminar remove
Adicionalmente, para eliminar el objeto se debe actualizar antes (como se muestra en el código). Lo anterior
se explica teniendo en cuenta los estados que tienen las entidades, como se indica:
Si observamos la imagen, para poder eliminar una entidad esta debe estar en estado “managed”. Una
entidad, antes de ser eliminada se encuentra en estado “detached”, y como se indica, para poder pasar de
detached a managed debo primero actualizar (merge) y luego ya podemos eliminar (remove)
- Ya con esto nos queda faltando los métodos para la búsqueda. Para esto, vamos a explicar dos formas de
búsqueda: la primera cuando se busca por la llave primaria de la tabla (PK) y la segunda para el resto de
búsquedas que se requieran hacer:
o Búsqueda por PK:
En este código, se debe tener en cuenta que los parámetros del método find corresponden a la clase que
debemos retornar (en nuestro caso Persona) y al valor del id por el que vamos a buscar (corresponde al
PK de la tabla. No funciona con datos que no sean PK)
o Otras búsquedas: En este caso podemos tener búsquedas que retornen una sola persona (por
ejemplo si se buscar una persona por cédula) o puede retornar varias personas (por ejemplo si se
busca por nombre).
En este código se buscan todas las personas que existen en la base de datos. Debemos tener en cuenta que en la
variable jpql se debe escribir la consulta en lenguaje JPQL que queremos ejecutar, y estos métodos pueden contener
diferentes parámetros para la consulta.
5. Vista
Para probar lo realizado en los numerales anteriores, es necesario crear una clase principal java la cual contenga el
código necesario para llamar a los métodos contenidos en la clase controladora. Para esto hacemos lo siguiente:
- Lo primero que vamos a hacer es crear el atributo que hace referencia al objeto que llamará los métodos
contenidos en el controlador (lo llamaremos pjc)
- En cada uno de los casos vamos a crear métodos que contengan el código para llamar los métodos CRUD
que se encuentran en el controlador:
o Guardar: se solicita los datos de la nueva persona a guardar, crear el objeto asignándole dichos datos
y luego se guarda:
o Eliminar: se solicita primero el id de la persona que se va a eliminar (para verificar si existe), en caso
en que exista se elimina de la base de datos.
o Buscar: se deben mostrar todas las personas que se encuentran almacenadas en la base de datos:
- Finalmente, a nuestro proyecto debemos agregarle la librería (driver) de postgresql que nos permita
comunicar con nuestra base de datos, para esto damos click derecho en la carpeta Libraries de nuestro
proyecto y seleccionamos Add Library, de la lista que se despliega seleccionamos la que se muestra en la
imagen:
Ahora podemos probar nuestro proyecto y verificar en la base de datos que la aplicación hace lo que se espera.
¡¡¡GRACIAS!!!