JPA - Komponen ORM

Sebagian besar aplikasi kontemporer menggunakan database relasional untuk menyimpan data. Baru-baru ini, banyak vendor beralih ke database objek untuk mengurangi beban pemeliharaan data. Ini berarti database objek atau teknologi relasional objek menangani penyimpanan, pengambilan, pembaruan, dan pemeliharaan. Bagian inti dari teknologi relasional objek ini adalah memetakan file orm.xml. Karena xml tidak memerlukan kompilasi, kami dapat dengan mudah membuat perubahan pada beberapa sumber data dengan sedikit administrasi.

Pemetaan Relasional Objek

Pemetaan Relasional Objek (ORM) secara singkat memberi tahu Anda tentang apa itu ORM dan cara kerjanya. ORM adalah kemampuan pemrograman untuk mengubah data dari tipe objek ke tipe relasional dan sebaliknya.

Fitur utama ORM adalah memetakan atau mengikat objek ke datanya di database. Sedangkan pemetaan kita harus mempertimbangkan data, jenis data dan hubungannya dengan self-entity atau entity di tabel lain.

Fitur lanjutan

  • Idiomatic persistence : Ini memungkinkan Anda untuk menulis kelas ketekunan menggunakan kelas berorientasi objek.

  • High Performance : Ini memiliki banyak teknik pengambilan dan teknik penguncian yang penuh harapan.

  • Reliable: Ini sangat stabil dan terkemuka. Digunakan oleh banyak programmer industri.

Arsitektur ORM

Di sini ikuti arsitektur ORM.

Arsitektur di atas menjelaskan bagaimana data objek disimpan ke dalam database relasional dalam tiga fase.

Fase1

Fase pertama, dinamakan sebagai Object datafase berisi kelas POJO, antarmuka layanan dan kelas. Ini adalah lapisan komponen bisnis utama, yang memiliki operasi dan atribut logika bisnis.

Misalnya mari kita ambil database karyawan sebagai skema-

  • Kelas POJO karyawan berisi atribut seperti ID, nama, gaji, dan penunjukan. Dan metode seperti metode penyetel dan pengambil dari atribut tersebut.

  • Kelas DAO / Layanan karyawan berisi metode layanan seperti membuat karyawan, menemukan karyawan, dan menghapus karyawan.

Tahap 2

Fase kedua disebut sebagai mapping atau persistence fase yang berisi penyedia JPA, file pemetaan (ORM.xml), JPA Loader, dan Object Grid.

  • JPA Provider: Produk vendor yang mengandung rasa JPA (javax.persistence). Misalnya Eclipselink, Toplink, Hibernate, dll.

  • Mapping file : File pemetaan (ORM.xml) berisi konfigurasi pemetaan antara data dalam kelas POJO dan data dalam database relasional.

  • JPA Loader: JPA loader bekerja seperti memori cache, yang dapat memuat data grid relasional. Ia bekerja seperti salinan database untuk berinteraksi dengan kelas layanan untuk data POJO (Atribut kelas POJO).

  • Object Grid: Kisi objek adalah lokasi sementara yang dapat menyimpan salinan data relasional, misalnya seperti memori cache. Semua kueri terhadap database pertama kali dilakukan pada data di kisi objek. Hanya setelah itu dilakukan, itu mempengaruhi database utama.

Tahap 3

Fase ketiga adalah fase data Relasional. Ini berisi data relasional yang secara logis terhubung ke komponen bisnis. Seperti dibahas di atas, hanya ketika komponen bisnis melakukan data, itu disimpan ke dalam database secara fisik. Sampai saat itu data yang dimodifikasi disimpan dalam memori cache sebagai format grid. Sama halnya dengan proses mendapatkan data.

Mekanisme interaksi terprogram dari ketiga fase di atas disebut sebagai pemetaan relasional objek.

Mapping.xml

File mapping.xml adalah untuk menginstruksikan vendor JPA untuk memetakan kelas Entitas dengan tabel database.

Mari kita ambil contoh entitas Karyawan yang berisi empat atribut. Kelas POJO dari entitas Karyawan bernamaEmployee.java adalah sebagai berikut:

public class Employee {

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

Kode di atas adalah kelas POJO entitas Karyawan. Ini berisi empat atribut id, ename, gaji, dan derajat. Pertimbangkan atribut ini adalah bidang tabel dalam database dan Idul Fitri adalah kunci utama dari tabel ini. Sekarang kita harus mendesain file pemetaan hibernasi untuk itu. File pemetaan bernamamapping.xml adalah sebagai berikut:

<? xml version="1.0" encoding="UTF-8" ?>

<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm    
   http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
   version="1.0">
      
   <description> XML Mapping file</description>
      
   <entity class="Employee">        
      <table name="EMPLOYEETABLE"/>
      <attributes>
      
         <id name="eid">
            <generated-value strategy="TABLE"/>
         </id>

         <basic name="ename">
            <column name="EMP_NAME" length="100"/>
         </basic>
         
         <basic name="salary">
         </basic>
         
         <basic name="deg">
         </basic>
         
      </attributes>
   </entity>
   
</entity-mappings>

Skrip di atas untuk memetakan kelas entitas dengan tabel database. Di file ini

  • <entity-mappings> : tag mendefinisikan definisi skema untuk mengizinkan tag entitas ke dalam file xml.

  • <description> : tag mendefinisikan deskripsi tentang aplikasi.

  • <entity>: tag mendefinisikan kelas entitas yang ingin Anda ubah menjadi tabel dalam database. Kelas atribut mendefinisikan nama kelas entitas POJO.

  • <table>: tag mendefinisikan nama tabel. Jika Anda ingin menggunakan nama kelas sebagai nama tabel maka tag ini tidak diperlukan.

  • <attributes> : tag mendefinisikan atribut (bidang dalam tabel).

  • <id>: tag mendefinisikan kunci utama dari tabel. Itu<generated-value> tag menentukan cara menetapkan nilai kunci utama seperti Otomatis, Manual, atau diambil dari Urutan.

  • <basic> : tag digunakan untuk menentukan atribut yang tersisa untuk tabel.

  • <column-name> : tag digunakan untuk menentukan nama field tabel yang ditentukan pengguna.

Anotasi

Umumnya file Xml digunakan untuk mengkonfigurasi komponen tertentu, atau memetakan dua spesifikasi komponen yang berbeda. Dalam kasus kami, kami harus mempertahankan xml secara terpisah dalam kerangka kerja. Itu berarti saat menulis file pemetaan xml kita perlu membandingkan atribut kelas POJO dengan tag entitas di file mapping.xml.

Inilah solusinya: Dalam definisi kelas, kita dapat menulis bagian konfigurasi menggunakan penjelasan. Anotasi digunakan untuk kelas, properti, dan metode. Anotasi dimulai dengan simbol '@'. Anotasi dideklarasikan sebelum kelas, properti atau metode dideklarasikan. Semua penjelasan JPA ditentukan dalam paket javax.persistence.

Berikut daftar anotasi yang digunakan dalam contoh kami

Anotasi Deskripsi
@Kesatuan Anotasi ini menentukan untuk mendeklarasikan kelas sebagai entitas atau tabel.
@Meja Anotasi ini menentukan untuk mendeklarasikan nama tabel.
@Dasar Anotasi ini secara eksplisit menetapkan bidang non-batasan.
@Bayu_joo Anotasi ini menetapkan properti kelas atau entitas yang nilainya instance dari kelas yang dapat disematkan.
@Indo Anotasi ini menentukan properti, digunakan untuk identitas (kunci utama tabel) kelas.
@GeneratedValue Anotasi ini menentukan, bagaimana atribut identitas dapat diinisialisasi seperti Otomatis, manual, atau nilai yang diambil dari tabel urutan.
@Sementara Anotasi ini menetapkan properti yang tidak persisten yaitu nilainya tidak pernah disimpan ke dalam database.
@Kolom Anotasi ini digunakan untuk menentukan kolom atau atribut untuk properti persistensi.
@Sequence Anotasi ini digunakan untuk menentukan nilai properti yang ditentukan dalam anotasi @GeneratedValue. Ini menciptakan urutan.
@Generator Meja Anotasi ini digunakan untuk menentukan generator nilai untuk properti yang ditentukan dalam anotasi @GeneratedValue. Ini menciptakan tabel untuk menghasilkan nilai.
@Akses Jenis Jenis anotasi ini digunakan untuk menyetel jenis akses. Jika Anda menyetel @AccessType (FIELD), maka akses bijaksana bidang akan muncul. Jika Anda menyetel @AccessType (PROPERTI), maka nilai properti yang bijaksana akan muncul.
@Bergabunglah Anotasi ini digunakan untuk menentukan asosiasi entitas atau kumpulan entitas. Ini digunakan dalam asosiasi banyak-ke-satu dan satu-ke-banyak.
@Bayu_joo Anotasi ini digunakan untuk menentukan bidang, batasan unik untuk tabel primer atau sekunder.
@Solusiholcim Anotasi ini mereferensikan nama kolom dalam kueri SQL menggunakan klausa pemilihan.
@Banyak ke banyak Anotasi ini digunakan untuk mendefinisikan hubungan banyak ke banyak antara Tabel gabungan.
@Bayu_joo Anotasi ini digunakan untuk mendefinisikan hubungan banyak-ke-satu antara Tabel gabungan.
@OneTany Anotasi ini digunakan untuk mendefinisikan hubungan satu-ke-banyak antara Tabel gabungan.
@OneTone Anotasi ini digunakan untuk mendefinisikan hubungan satu-ke-satu antara Tabel gabungan.
@Named Anotasi ini digunakan untuk menentukan daftar kueri bernama.
@Namedery Anotasi ini digunakan untuk menentukan Query menggunakan nama statis.

Standar Kacang Java

Kelas Java, merangkum nilai dan perilaku instance ke dalam satu unit objek callled. Java Bean adalah penyimpanan sementara dan komponen atau objek yang dapat digunakan kembali. Ini adalah kelas serializable yang memiliki konstruktor default dan metode pengambil & penyetel untuk menginisialisasi atribut instance secara individual.

Konvensi Kacang

  • Bean berisi konstruktor default atau file yang berisi instance berseri. Oleh karena itu, kacang dapat membuat contoh kacang.

  • Properti kacang dapat dipisahkan menjadi properti Boolean dan properti non-Boolean.

  • Properti non-Boolean berisi getter dan setter metode.

  • Properti Boolean berisi setter dan is metode.

  • Gettermetode properti apa pun harus dimulai dengan huruf kecil 'get' (konvensi metode java) dan dilanjutkan dengan nama bidang yang dimulai dengan huruf kapital. Misalnya nama field adalah 'gaji' maka metode pengambil dari field ini adalah 'getSalary ()'.

  • Settermetode properti apa pun harus dimulai dengan 'set' berhuruf kecil (konvensi metode java), dilanjutkan dengan nama bidang yang dimulai dengan huruf kapital dan nilai argumen untuk disetel ke bidang. Misalnya nama field adalah 'gaji' oleh karena itu metode penyetel bidang ini adalah 'setSalary (double sal)'.

  • Untuk properti Boolean, adalah metode untuk memeriksa apakah itu benar atau salah. Misalnya properti Boolean 'kosong', metode is dari bidang ini adalah 'isEmpty ()'.