Este capítulo utiliza un sencillo ejemplo para mostrar cómo funciona JPA. Consideremos Gestión empleado como un ejemplo. Supongamos que el empleado Gestión 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 módulos 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 jerarquía del paquete que hemos utilizado en la instalación de JPA con Eclipselink . Seguimiento de la jerarquía de este ejemplo como se muestra a continuación:
Las entidades no son sino los frijoles o modelos. En este ejemplo, usaremos empleado como entidad. eid, ename, salario, y deg son los atributos de esta entidad. Contiene un constructor predeterminado, así como los métodos setter y getter de esos atributos.
En el se muestra jerarquía, crear un paquete denominado ‘com.howcodex.eclipselink.entity’, en ‘src’ (Fuente). Crear una clase denominada Employee.java bajo determinado paquete de la siguiente manera:
package com.howcodex.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 código anterior, hemos utilizado anotación @Entidad POJO para hacer esta clase de entidad.
Antes de pasar al módulo 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
Este módulo 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 jerarquía 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.howcodex.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 específico 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, especificación URL, nombre de usuario y contraseña. Estas son las propiedades Eclipselink. Este archivo configurará la base de datos.
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 jerarquía de paquete, crear un paquete denominado ‘com.howcodex.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:
El segmento de código siguiente muestra cómo crear una clase empleado llamada CreateEmployee.java.
package com.howcodex.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.howcodex.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 código 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() método. El entitymanager objeto crea entitytransaction instancia para la gestión 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 |
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.howcodex.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.howcodex.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(); } }
Después de la compilación y ejecución 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.
Para encontrar los registros de un empleado, tenemos que recuperar los datos existentes desde la base de datos y mostrarlo. En esta operación, EntityTransaction no se aplica al recuperar un registro.
La clase denominada FindEmployee.java como sigue.
package com.howcodex.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.howcodex.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( )); } }
Después 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
Para borrar los registros de un empleado, primero encontraremos los registros existentes y luego borrarlo. Aquí EntityTransaction desempeña un papel importante.
La clase denominada DeleteEmployee.java como sigue:
package com.howcodex.eclipselink.service; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import com.howcodex.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( ); } }
Después de la compilación y ejecución 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 llamado empleado tendrá registros nulos.
Después de la terminación de todos los módulos en este ejemplo, la jerarquía de archivos y paquete Mira como sigue: