Эта глава использует простой пример для того чтобы продемонстрировать как JPA работает. Препятствуйте нам рассматривать управление работника как пример. Предположите что управление работника создает, уточняет, находит, и уничтожает показатели работника. Как упомянуто, мы используем базу данных MySQL для деятельностей базы данных.
Главные модули для этого примера следующим образом:
Модель или POJO
Employee.java
Персистирование
Persistence.xml
Обслуживание
CreatingEmployee.java
UpdatingEmployee.java
FindingEmployee.java
DeletingEmployee.java
Препятствуйте нам принять иерархию пакета которую мы использовали в установке JPA с Eclipselink. Следовать иерархией для этого примера как показан ниже:
Реальности ничего но фасоли или модели. В этом примере, мы будем использовать работника как реальность. eid, ename, зарплата, и deg атрибуты этой реальности. Она содержит конструктора значения по умолчанию так же, как методов сеттера и геттера тех атрибутов.
В вышеупомянутой показанной иерархии создайте пакет, названный ‘com.howcodex.eclipselink.entity’ под ‘src’ (Источник) пакет. Создайте класс, названный Employee.java под данным пакетом следующим образом:
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 + "]"; } }
В вышеуказанном Коде, мы использовали приписку @Entity для того чтобы сделать этим типом POJO реальность.
Перед идти к следующему модулю нам нужно создать базу данных для реляционной реальности, которая зарегистрирует базу данных в архиве persistence.xml. Раскройте workbench MySQL и напечатайте следующий вопрос на машинке.
create database jpadb use jpadb
Этот модуль играет критическую роль в принципиальной схеме JPA. В этом архиве xml мы зарегистрируем базу данных и определим тип реальности.
В выше показанной иерархии пакета, persistence.xml под пакетом содержания JPA следующим образом:
<?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>
В вышеуказанном xml, бирка <persistence-unit> определена с специфическим именем для персистирования JPA. Бирка <class> определяет тип реальности с именем пакета. Бирка <properties> определяет все свойства, и бирка <property> определяет каждое свойство как зарегистрирование базы данных, спецификация URL, имя пользователя, и пароль. Эти свойства Eclipselink. Этот архив установит базу данных.
Деятельности персистирования использованы для взаимодействовать с базой данных и они нагрузка и хранят деятельности. В компоненте дела, все деятельности персистирования понижаются под типы обслуживания.
В выше показанной иерархии пакета, создайте названный пакет ` com.howcodex.eclipselink.service', под пакетом src `' (источник). Все типы обслуживания названные как CreateEmloyee.java, UpdateEmployee.java, FindEmployee.java, и DeleteEmployee.java приходят под, котор дали пакет следующим образом:
Следующий этап Кода показывает как создать названный тип работника 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( ); } }
В вышеуказанном Коде createEntityManagerFactory () создает блок персистирования путем подавать такое же уникально имя которое мы подаем для персистировани-блока в архиве persistent.xml. Entitymanagerfactory предмет создаст пример entitymanger путем использование метода createEntityManager (). Предмет entitymanager создает пример entitytransaction для управления трудыов. Путем использование предмета entitymanager, мы можем упорствовать реальности в базу данных.
После составления и исполнения вышеуказанной программы вы получите извещения от архива eclipselink на панели пульта затмения IDE.
Для результата, раскройте workbench MySQL и напечатайте следующие вопросы на машинке.
use jpadb select * from employee
Произведенный эффект работник таблицы базы данных названный будет показан в таблитчатом формате следующим образом:
Eid | Ename | Зарплата | Deg |
---|---|---|---|
1201 | Gopal | 40000 | Технический менеджер |
Для уточнения показателей работника, нам нужно восстановить существующие показатели формируем базу данных, делаем изменения, и окончательно поручаем она к базе данных. Названный тип UpdateEmployee.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 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(); } }
После составления и исполнения вышеуказанной программы вы получите извещения от архива Eclipselink на панели пульта затмения IDE.
Для результата, раскройте workbench MySQL и напечатайте следующие вопросы на машинке.
use jpadb select * from employee
Произведенный эффект работник таблицы базы данных названный будет показан в таблитчатом формате следующим образом:
Eid | Ename | Зарплата | Deg |
---|---|---|---|
1201 | Gopal | 46000 | Технический менеджер |
Зарплата работника, 1201 обновлена до 46000.
Для того чтобы найти показатели работника, мы восстановить существующие данные от базы данных и показать ее. В этой деятельности, EntityTransaction не прикладной пока восстановляющ показатель.
Тип названный FindEmployee.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 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( )); } }
После составлять и исполнять вышеуказанную программу, вы получите следующий выход от архива Eclipselink на панели пульта затмения IDE.
employee ID = 1201 employee NAME = Gopal employee SALARY = 46000.0 employee DESIGNATION = Technical Manager
Для того чтобы уничтожить показатели работника, сперва мы найдем существующие показатели и после этого уничтожим его. Здесь EntityTransaction играет важную роль.
Названный тип DeleteEmployee.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 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( ); } }
После составления и исполнения вышеуказанной программы вы получите извещения от архива Eclipselink на панели пульта затмения IDE.
Для результата, раскройте workbench MySQL и напечатайте следующие вопросы на машинке.
use jpadb select * from employee
Произведенная эффект названная база данных работником будет иметь нулевые показатели.
После завершения всех модулей в этом примере, пакете и взглядах иерархии архива следующим образом: