JPA - Менеджеры реальности


Advertisements

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

Persistence.xml

Этот модуль играет критическую роль в принципиальной схеме 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

Произведенная эффект названная база данных работником будет иметь нулевые показатели.

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

Модули
Advertisements