Учебники

JPA — Entity Managers

В этой главе мы рассмотрим простой пример с 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 будет иметь нулевые записи.

После завершения всех модулей в этом примере иерархия пакетов и файлов отображается следующим образом: