JPA - Administradores de la Entidad


Advertisements

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:

Jerarquía paquete

Crear entidades

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

Persistence.xml

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.

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 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:

Crear empleado

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

Empleado de actualización

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.

Encontrar empleados

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

Eliminar empleados

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:

Módulos
Advertisements