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