JPA - Administradores de entidad
Este captulo utiliza un sencillo ejemplo para mostrar cmo funciona JPA. Consideremos Gestin empleado como un ejemplo. Supongamos que el empleado Gestin crea, actualiza y elimina los registros de un empleado. Como ya se ha mencionado, estamos utilizando bases de datos MySQL para operaciones de base de datos.
Los mdulos principales para este ejemplo son los siguientes:
-
Model or POJO
Employee.java
-
Persistence
Persistence.xml
-
Service
CreatingEmployee.java
UpdatingEmployee.java
FindingEmployee.java
DeletingEmployee.java
Tomemos la jerarqua del paquete que hemos utilizado en la instalacin de JPA con Eclipselink . Seguimiento de la jerarqua de este ejemplo como se muestra a continuacin:

Crear entidades
Las entidades no son sino los frijoles o modelos. En este ejemplo, usaremos empleado como entidad. eid, ename, salario, ydeg son los atributos de esta entidad. Contiene un constructor predeterminado, as como los mtodos setter y getter de esos atributos.
En el se muestra jerarqua, crear un paquete denominado com.tutorialspoint.eclipselink.entity, en src (Fuente). Crear una clase denominada Employee.java bajo determinado paquete de la siguiente manera:
package com.tutorialspoint.eclipselink.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table public class Employee { @Id @GeneratedValue(strategy= GenerationType.AUTO) private int eid; private String ename; private double salary; private String deg; public Employee(int eid, String ename, double salary, String deg) { super( ); this.eid = eid; this.ename = ename; this.salary = salary; this.deg = deg; } public Employee( ) { super(); } public int getEid( ) { return eid; } public void setEid(int eid) { this.eid = eid; } public String getEname( ) { return ename; } public void setEname(String ename) { this.ename = ename; } public double getSalary( ) { return salary; } public void setSalary(double salary) { this.salary = salary; } public String getDeg( ) { return deg; } public void setDeg(String deg) { this.deg = deg; } @Override public String toString() { return "Employee [eid=" + eid + ", ename=" + ename + ", salary=" + salary + ", deg=" + deg + "]"; } }
En el cdigo anterior, hemos utilizado anotacin @Entidad POJO para hacer esta clase de entidad.
Antes de pasar al mdulo siguiente tenemos que crear base de datos para entidad relacional, que registrar la base de datos en persistence.xml archivo. Abierto MySQL workbench y escriba la siguiente consulta.
create database jpadb use jpadb
Persistence.xml
Este mdulo tiene un papel crucial en el concepto de JPA. En este archivo xml que se registrar la base de datos y especificar la clase de entidad.
Lo anterior se muestra en la jerarqua del paquete, persistence.xml en JPA Contenido del paquete es la siguiente:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL"> <class>com.tutorialspoint.eclipselink.entity.Employee</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="eclipselink.logging.level" value="FINE"/> <property name="eclipselink.ddl-generation" value="create-tables"/> </properties> </persistence-unit> </persistence>
En el xml, <persistence-unit> etiqueta se define con un nombre especfico de persistencia JPA. La <class> etiqueta define la clase de entidad con nombre del paquete. La <properties> etiqueta define todas las propiedades, y <property> etiqueta define cada propiedad como registro de base de datos, especificacin URL, nombre de usuario y contrasea. Estas son las propiedades Eclipselink. Este archivo configurar la base de datos.
Operaciones de persistencia
Las operaciones de persistencia se utilizan para interactuar con una base de datos y son carga y tienda operaciones. En un componente de negocio, todas las operaciones de persistencia caen bajo clases de servicio.
En el anterior se muestra la jerarqua de paquete, crear un paquete denominado com.tutorialspoint.eclipselink.service, en src (fuente) paquete. Todas las clases de servicio nombradas CreateEmloyee.java, UpdateEmployee.java, FindEmployee.java, y DeleteEmployee.java. viene en el paquete determinado como sigue:
Crear empleado
El segmento de cdigo siguiente muestra cmo crear una clase empleado llamadaCreateEmployee.java.
package com.tutorialspoint.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Employee; public class CreateEmployee { public static void main( String[ ] args ) { EntityManagerFactory emfactory = Persistence. createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory. createEntityManager( ); entitymanager.getTransaction( ).begin( ); Employee employee = new Employee( ); employee.setEid( 1201 ); employee.setEname( "Gopal" ); employee.setSalary( 40000 ); employee.setDeg( "Technical Manager" ); entitymanager.persist( employee ); entitymanager.getTransaction( ).commit( ); entitymanager.close( ); emfactory.close( ); } }
En el cdigo anterior el createEntityManagerFactory () crea una unidad de persistencia proporcionando el mismo nombre nico que proporcionamos para unidad de persistencia en persistent.xml archivo. El entitymanagerfactory objeto crear el entitymanger instancia mediante el uso de createEntityManager () mtodo. El entitymanager objeto crea entitytransaction instancia para la gestin de transacciones. Mediante el uso de entitymanager objeto, podemos persistimos entidades en la base de datos.
After compilation and execution of the above program you will get notifications from eclipselink library on the console panel of eclipse IDE.
Para el resultado, abra el MySQL workbench y escriba las siguientes consultas.
use jpadb select * from employee
La tabla de base de datos efectuado llamada empleado se mostrar en un formato tabular de la siguiente manera:
Eid | Ename | Salary | Deg |
---|---|---|---|
1201 | Gopal | 40000 | Technical Manager |
Empleado de actualizacin
Para actualizar los registros de un empleado, tenemos que recuperar la forma existente de registros la base de datos, realizar cambios y finalmente lo comprometen a la base de datos. La clase denominada UpdateEmployee.java se muestra como sigue:
package com.tutorialspoint.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Employee; public class UpdateEmployee { public static void main( String[ ] args ) { EntityManagerFactory emfactory = Persistence. createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory. createEntityManager( ); entitymanager.getTransaction( ).begin( ); Employee employee=entitymanager. find( Employee.class, 1201 ); //before update System.out.println( employee ); employee.setSalary( 46000 ); entitymanager.getTransaction( ).commit( ); //after update System.out.println( employee ); entitymanager.close(); emfactory.close(); } }
Despus de la compilacin y ejecucin del programa anterior usted recibir notificaciones de biblioteca Eclipselink sobre el panel de la consola de eclipse IDE.
Para el resultado, abra el MySQL workbench y escriba las siguientes consultas.
use jpadb select * from employee
La tabla de base de datos efectuado llamada empleado se mostrar en un formato tabular de la siguiente manera:
Eid | Ename | Salary | Deg |
---|---|---|---|
1201 | Gopal | 46000 | Technical Manager |
El salario del empleado, 1201 se actualiza a 46000.
Encontrar empleados
Para encontrar los registros de un empleado, tenemos que recuperar los datos existentes desde la base de datos y mostrarlo. En esta operacin, EntityTransaction no se aplica al recuperar un registro.
La clase denominada FindEmployee.java como sigue.
package com.tutorialspoint.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Employee; public class FindEmployee { public static void main( String[ ] args ) { EntityManagerFactory emfactory = Persistence .createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory. createEntityManager(); Employee employee = entitymanager. find( Employee.class, 1201 ); System.out.println("employee ID = "+employee.getEid( )); System.out.println("employee NAME = "+employee.getEname( )); System.out.println("employee SALARY = "+employee.getSalary( )); System.out.println("employee DESIGNATION = "+employee.getDeg( )); } }
Despus de compilar y ejecutar el programa anterior, usted recibir la siguiente salida de la biblioteca Eclipselink sobre el panel de la consola de eclipse IDE.
employee ID = 1201 employee NAME = Gopal employee SALARY = 46000.0 employee DESIGNATION = Technical Manager
Eliminar empleados
Para borrar los registros de un empleado, primero encontraremos los registros existentes y luego borrarlo. Aqu EntityTransaction desempea un papel importante.
La clase denominadaDeleteEmployee.java como sigue:
package com.tutorialspoint.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.tutorialspoint.eclipselink.entity.Employee; public class DeleteEmployee { public static void main( String[ ] args ) { EntityManagerFactory emfactory = Persistence. createEntityManagerFactory( "Eclipselink_JPA" ); EntityManager entitymanager = emfactory. createEntityManager( ); entitymanager.getTransaction( ).begin( ); Employee employee=entitymanager. find( Employee.class, 1201 ); entitymanager.remove( employee ); entitymanager.getTransaction( ).commit( ); entitymanager.close( ); emfactory.close( ); } }
Despus de la compilacin y ejecucin del programa anterior usted recibir notificaciones de biblioteca Eclipselink sobre el panel de la consola de eclipse IDE.
Para el resultado, abra el MySQL workbench y escriba las siguientes consultas.
use jpadb select * from employee
La base de datos efectuado llamadoempleado tendr registros nulos.
Despus de la terminacin de todos los mdulos en este ejemplo, la jerarqua de archivos y paquete Mira como sigue:
