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