JPA - Gerentes de entidade

Este capítulo mostra exemplos simples com o JPA. Vamos considerar o gerenciamento de funcionários como exemplo. Isso significa que o gerenciamento de funcionários está criando, atualizando, localizando e excluindo um funcionário. Como mencionado acima, estamos usando o banco de dados MySQL para operações de banco de dados.

Os principais módulos deste exemplo são os seguintes:

  • Modelo ou POJO

    Employee.java

  • Persistência

    Persistence.xml

  • Serviço

    CreatingEmployee.java

    UpdatingEmployee.java

    FindingEmployee.java

    DeletingEmployee.java

Vamos pegar a hierarquia de pacotes que usamos na instalação JPA com Eclipse link Eclipse . Siga a hierarquia para este exemplo, como abaixo:

Hierarquia de Pacotes

Criando entidades

Entidades nada mais são que beans ou Modelos; neste exemplo, usaremos Employee como entidade. eid, ename, salário e deg são os atributos desta entidade. Ele contém métodos padrão de construtor, setter e getter desses atributos.

Na hierarquia mostrada acima, crie um pacote chamado 'com.tutorialspoint.eclipselink.entity' , no pacote 'src' (Origem). Crie uma classe chamada Employee.java no pacote fornecido da seguinte maneira:

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

No código acima, usamos a anotação @Entity para tornar essa classe POJO como entidade.

Antes de avançar para o próximo módulo, precisamos criar um banco de dados para entidade relacional, que registrará o banco de dados no arquivo persistence.xml . Abra o ambiente de trabalho MySQL e digite query da seguinte maneira:

create database jpadb
use jpadb

Persistence.xml

Este módulo desempenha um papel crucial no conceito de JPA. Neste arquivo xml, registraremos o banco de dados e especificaremos a classe da entidade.

Na hierarquia de pacotes mostrada acima, persistence.xml no pacote JPA Content é o 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=" Eclipse link_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>

No xml acima, a tag <persistence-unit> é definida com um nome específico para persistência do JPA. A tag <class> define a classe da entidade com o nome do pacote. A tag <properties> define todas as propriedades, e a tag <property> define cada propriedade, como registro do banco de dados, especificação de URL, nome de usuário e senha. Estas são as propriedades do link do Eclipse . Este arquivo irá configurar o banco de dados.

Operações de persistência

As operações de persistência são usadas no banco de dados e são operações de carregamento e armazenamento . Em um componente de negócios, todas as operações de persistência se enquadram nas classes de serviço.

Na hierarquia de pacotes mostrada acima, crie um pacote chamado 'com.tutorialspoint.eclipselink.service' , em pacote 'src' (origem). Todas as classes de serviço nomeadas como CreateEmloyee.java, UpdateEmployee.java, FindEmployee.java e DeleteEmployee.java. vem com o pacote fornecido da seguinte maneira:

Criar funcionário

Criando uma classe Employee denominada CreateEmployee.java da seguinte maneira:

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( " Eclipse link_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 fornecemos para a unidade de persistência no arquivo persistent.xml. O objeto entitymanagerfactory criará a instância do entitymanger usando o método createEntityManager () . O objeto entitymanager cria uma instância de transação de entidade para gerenciamento de transações. Usando o objeto entitymanager, podemos persistir entidades no banco de dados.

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

Para resultado, abra o ambiente de trabalho MySQL e digite as seguintes consultas.

use jpadb
select * from employee

A tabela de banco de dados efetuada denominada employee será mostrada em um formato tabular da seguinte maneira:

Eid Ename Salário Deg
1201 Gopal 40000 Gerente técnico

Atualizar funcionário

Para atualizar um funcionário, precisamos obter o banco de dados do formulário de registro, fazer alterações e, finalmente, confirmar. A classe denominada UpdateEmployee.java é mostrada da seguinte maneira:

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( " Eclipse link_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 a compilação e execução do programa acima, você receberá notificações da biblioteca de links do Eclipse no painel do console do eclipse IDE.

Para resultado, abra o ambiente de trabalho MySQL e digite as seguintes consultas.

use jpadb
select * from employee

A tabela de banco de dados efetuada denominada employee será mostrada em um formato tabular da seguinte maneira:

Eid Ename Salário Deg
1201 Gopal 46000 Gerente técnico

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

Encontrar Funcionário

Para encontrar um funcionário, obteremos um registro do banco de dados e o exibiremos. Nesta operação, EntityTransaction não está envolvido, nenhuma transação é aplicada durante a recuperação de um registro.

A classe denominada FindEmployee.java da seguinte maneira.

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( " Eclipse link_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 programa acima, você obterá a saída da biblioteca de links do Eclipse no painel do console do eclipse IDE da seguinte maneira:

employee ID = 1201
employee NAME = Gopal
employee SALARY = 46000.0
employee DESIGNATION = Technical Manager

Exclusão de funcionário

Para excluir um funcionário, primeiro encontraremos o registro e depois o excluiremos. Aqui, a EntityTransaction desempenha um papel importante.

A classe denominada DeleteEmployee.java da seguinte maneira:

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( " Eclipse link_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 a compilação e execução do programa acima, você receberá notificações da biblioteca de links do Eclipse no painel do console do eclipse IDE.

Para resultado, abra o ambiente de trabalho MySQL e digite as seguintes consultas.

use jpadb
select * from employee

O banco de dados afetado chamado employee terá registros null .

Após a conclusão de todos os módulos neste exemplo, a hierarquia de pacotes e arquivos é mostrada da seguinte maneira:

Módulos