JPA - Entidade Gerentes


Advertisements

Este capítulo usa um exemplo simples para demonstrar como JPA funciona. Deixe-nos considerar funcionário Management como um exemplo. Suponhamos que a gestão dos trabalhadores cria, atualiza, encontra e exclui os registros de um funcionário. Como já foi referido, estamos usando banco de dados MySQL para operações do banco.

Os principais módulos para este exemplo são as seguintes:

  • EM POJO ou modelo

    Java o empregado.

  • Persistência

    Persistência.xml

  • Service

    CreatingEmployee.java

    UpdatingEmployee.java

    FindingEmployee.java

    DeletingEmployee.java

Vamos levar a hierarquia de pacotes que temos usado no JPA instalação com Eclipselink. Siga a hierarquia para este exemplo como mostrado abaixo:

Hierarquia Package

Criar Entidades

As entidades são nada mas também o feijão ou modelos. Neste exemplo, vamos usar funcionário como uma entidade. eid, ename, salário e deg são os atributos desta entidade. Ele contém um construtor padrão, bem como os métodos setter e getter de esses atributos.

A hierarquia acima mostrados, crie um pacote chamado‘com.howcodex.eclipselink.entity’, sob o título "src" (Fonte) pacote. Criar uma classe chamadaEmployee.java sob determinado pacote, conforme segue:

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 + "]";
   }
}

No código acima, temos utilizado anotação @Entity para fazer esta classe POJO EM uma entidade.

Antes de passar para o próximo módulo, necessidade de criar banco de dados para entidade relacional, que irá registrar o banco de dados nopersistence.xml arquivo. Abra o MySQL workbench e digite a seguinte consulta.

create database jpadb
use jpadb

Persistência.xml

Este módulo tem um papel fundamental no conceito de JPA. A este arquivo xml, vamos registrar o banco de dados e especificar a classe de entidades.

No pacote acima mostrados hierarquia, persistência.xml em JPA pacote de conteúdo é a seguinte:

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

No xml, <persistence-unit> tag é definido com um nome específico de persistência JPA. O<class>tag define entidade classe com nome do pacote. O<properties>tag define todas as propriedades, e <property> tag define cada propriedade, tais como dados de registo, URL das especificações, o nome de usuário e a senha. Estes são o Eclipselink propriedades. Este arquivo irá configurar o banco de dados.

A persistência das Operações

A persistência das operações são usados para interagir com um banco de dados e eles são carregados e operações de loja. Em um componente comercial, todos a persistência das operações caem sob as classes de serviço.

No pacote acima mostrados hierarquia, crie um pacote chamado‘com.howcodex.eclipselink.service’, sob o título "src" (fonte) pacote. Todas as classes de serviço denominado CreateEmloyee.java, UpdateEmployee.java, FindEmployee.java, e DeleteEmployee.java. vem sob o pacote como se segue:

Criar Funcionários

O seguinte segmento de código mostra como criar uma classe chamada funcionário 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( );
   }
}

No código acima o createEntityManagerFactory () cria uma unidade de persistência, fornecendo o mesmo nome exclusivo que oferecemos de persistence-unit na persistência.xml file. O entitymanagerfactory já disponíveis no vraptor objeto irá criar a instância usando entitymanger createEntityManager () método. O entitymanager objeto entitytransaction cria instância para gerenciamento de transações. Utilizandoentitymanager objeto, que podem persistir as entidades no banco de dados.

Após compilação e execução do referido programa você irá receber notificações da biblioteca eclipselink no painel do console do eclipse IDE.

Para isso, abra o MySQL workbench e digite as seguintes consultas.

use jpadb
select * from employee

O nome á tabela da base de dados dos funcionários será mostrado em formato de tabela, como se segue:

Eid Ename Salário Deg
1201 Gopal 40000 Gestor Técnico

Update Empregado

Para atualizar os registros de um funcionário, é preciso recuperar os registros existentes do banco de dados, fazer alterações, e finalmente comprometer-se-a para o banco de dados. A classe chamada UpdateEmployee.java é mostrada como se segue:

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();
   }
}

Após compilação e execução do referido programa você irá receber notificações da biblioteca Eclipselink no painel do console do eclipse IDE.

Para isso, abra o MySQL workbench e digite as seguintes consultas.

use jpadb
select * from employee

O nome á tabela da base de dados dos funcionários será mostrado em formato de tabela, como se segue:

Eid Ename Salário Deg
1201 Gopal 46000 Gestor Técnico

O salário do funcionário, 1201 é atualizado para 46000.

Encontre Trabalhador

Para encontrar os registros de um funcionário, teremos de recuperar os dados existentes no banco de dados e exibi-lo. Nesta operação, EntityTransaction. não é aplicada ao recuperar um registro.

A classe chamada FindEmployee.java como se segue.

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( ));
   }
}

Após a compilação e execução do referido programa, você irá obter o seguinte resultado da biblioteca Eclipselink no painel do console do eclipse IDE.

Empregado ID = 1201
nome do empregado = Gopal
empregado salário = 46000.0
empregado DESIGNAÇÃO = Gestor Técnico

Excluindo Funcionário

Para excluir os registros de um funcionário, em primeiro lugar, vamos encontrar os registros existentes e, em seguida, apagá-lo. Aqui EntityTransaction. desempenha um papel importante.

A classe chamada DeleteEmployee.java como segue:

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( );
   }
}

Após compilação e execução do referido programa você irá receber notificações da biblioteca Eclipselink no painel do console do eclipse IDE.

Para isso, abra o MySQL workbench e digite as seguintes consultas.

use jpadb
select * from employee

O realizadas banco de dados chamado funcionário terá nulos os registros.

Após a conclusão de todos os módulos, neste exemplo, o arquivo pacote e hierarquia tem o seguinte aspecto:

módulos
Advertisements