JPA - Manajer Entitas

Bab ini membawa Anda melalui contoh sederhana dengan JPA. Mari kita pertimbangkan manajemen karyawan sebagai contoh. Artinya manajemen karyawan membuat, memperbarui, menemukan, dan menghapus karyawan. Seperti disebutkan di atas, kami menggunakan database MySQL untuk operasi database.

Modul utama untuk contoh ini adalah sebagai berikut:

  • Model or POJO

    Employee.java

  • Persistence

    Persistence.xml

  • Service

    CreatingEmployee.java

    UpdatingEmployee.java

    FindingEmployee.java

    DeletingEmployee.java

Mari kita ambil hierarki paket yang telah kita gunakan dalam instalasi JPA dengan Eclipselink. Ikuti hierarki untuk contoh ini seperti di bawah ini:

Membuat Entitas

Entitas tidak lain adalah kacang atau Model, dalam contoh ini kita akan menggunakan Employee sebagai entitas. eid, ename, salary, dan degadalah atribut entitas ini. Ini berisi metode konstruktor, penyetel dan pengambil default dari atribut tersebut.

Dalam hierarki yang ditunjukkan di atas, buat paket bernama ‘com.tutorialspoint.eclipselink.entity’, dibawah ‘src’(Sumber) paket. Buat kelas bernamaEmployee.java di bawah paket yang diberikan sebagai berikut:

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 + "]";
   }
}

Dalam kode di atas, kami telah menggunakan anotasi @Entity untuk menjadikan kelas POJO ini sebagai entitas.

Sebelum melanjutkan ke modul berikutnya kita perlu membuat database untuk entitas relasional, yang akan mendaftarkan database tersebut persistence.xmlmengajukan. Buka meja kerja MySQL dan ketik kueri sebagai berikut:

create database jpadb
use jpadb

Persistence.xml

Modul ini memainkan peran penting dalam konsep JPA. Dalam file xml ini kami akan mendaftarkan database dan menentukan kelas entitas.

Dalam hierarki paket yang ditunjukkan di atas, persistence.xml di bawah Paket konten JPA adalah sebagai berikut:

<?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>

Dalam xml di atas, tag <persistence-unit> ditentukan dengan nama spesifik untuk persistensi JPA. Tag <class> mendefinisikan kelas entitas dengan nama paket. Tag <properties> mendefinisikan semua properti, dan tag <property> mendefinisikan setiap properti seperti pendaftaran database, spesifikasi URL, nama pengguna, dan kata sandi. Ini adalah properti Eclipselink. File ini akan mengkonfigurasi database.

Operasi Persistensi

Operasi persistensi digunakan terhadap database dan memang demikian load dan storeoperasi. Dalam komponen bisnis, semua operasi ketekunan termasuk dalam kelas layanan.

Dalam hierarki paket yang ditunjukkan di atas, buat paket bernama ‘com.tutorialspoint.eclipselink.service’, dibawah ‘src’(sumber) paket. Semua kelas layanan bernama CreateEmloyee.java, UpdateEmployee.java, FindEmployee.java, dan DeleteEmployee.java. berada di bawah paket yang diberikan sebagai berikut:

Buat Karyawan

Membuat kelas Karyawan bernama CreateEmployee.java sebagai berikut:

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( );
   }
}

Pada kode di atas, createEntityManagerFactory ()membuat unit persistensi dengan memberikan nama unik yang sama yang kami berikan untuk persistence-unit di file persistent.xml. Objek entitymanagerfactory akan membuat instance entitymanger dengan menggunakancreateEntityManager ()metode. Objek pengelola entitas membuat instance transaksi entitas untuk manajemen transaksi. Dengan menggunakan objek entitymanager, kita dapat menyimpan entitas ke dalam database.

Setelah kompilasi dan eksekusi program di atas, Anda akan mendapatkan notifikasi dari eclipselink library pada panel konsol eclipse IDE.

Hasilnya, buka meja kerja MySQL dan ketik kueri berikut.

use jpadb
select * from employee

Tabel database yang terpengaruh bernama employee akan ditampilkan dalam format tabel sebagai berikut:

Idul Fitri Ename Gaji Deg
1201 Gopal 40000 Manajer teknis

Perbarui Karyawan

Untuk memperbarui karyawan, kita perlu mendapatkan database formulir rekaman, membuat perubahan, dan akhirnya mengkomitnya. Kelas bernamaUpdateEmployee.java ditampilkan sebagai berikut:

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();
   }
}

Setelah kompilasi dan eksekusi program di atas, Anda akan mendapatkan notifikasi dari library Eclipselink di panel konsol eclipse IDE.

Hasilnya, buka meja kerja MySQL dan ketik kueri berikut.

use jpadb
select * from employee

Tabel database yang terpengaruh bernama employee akan ditampilkan dalam format tabel sebagai berikut:

Idul Fitri Ename Gaji Deg
1201 Gopal 46000 Manajer teknis

Gaji karyawan, 1201 diperbarui menjadi 46000.

Temukan Karyawan

Untuk mencari karyawan kita akan mendapatkan record dari database dan menampilkannya. Dalam operasi ini, EntityTransaction tidak terlibat, transaksi apa pun tidak diterapkan saat mengambil rekaman.

Kelas bernama FindEmployee.java sebagai berikut.

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( ));
   }
}

Setelah kompilasi dan eksekusi program di atas Anda akan mendapatkan output dari library Eclipselink pada panel konsol eclipse IDE sebagai berikut:

employee ID = 1201
employee NAME = Gopal
employee SALARY = 46000.0
employee DESIGNATION = Technical Manager

Menghapus Karyawan

Untuk Menghapus Karyawan, pertama-tama kita akan menemukan catatan dan kemudian menghapusnya. Di sini EntityTransaction memainkan peran penting.

Kelas bernama DeleteEmployee.java sebagai berikut:

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( );
   }
}

Setelah kompilasi dan eksekusi program di atas, Anda akan mendapatkan notifikasi dari library Eclipselink di panel konsol eclipse IDE.

Hasilnya, buka meja kerja MySQL dan ketik kueri berikut.

use jpadb
select * from employee

Database yang terkena dampak bernama employee akan memiliki catatan nol.

Setelah menyelesaikan semua modul dalam contoh ini, paket dan hierarki file ditampilkan sebagai berikut: