java persistence api

36
www.freak-kutuonline.com copyleft @ 2012. All right reserved. 1 Java Persistence API – Doni Andriansyah (14000656) JAVA PERSISTENCE API (JPA) JPA (Java Persistence API) adalah bahasa pemrograman framework yang memungkinkan developer untuk mengelola relasi data di platform Java Standard Edition (J2SE) dan Java Platform Enterprise Edition (J2EE). JPA merupakan abstraksi tingkat lanjut dari JDBC yang memungkinkan aplikasi terbebas dari bahasa SQL. Semua CLASS dan ANNOTATIONS dari JPA berada dalam package JAVAX.PERSISTENCE. Komponen utama JPA adalah sebagai berikut : ORM (Object Relational Mapping), yang merupakan mekanisme untuk memetakan object untuk disimpan didalam relational database. ENTITY MANAGER API, untuk melakukan operasi yang berhubungan dengan database seperti create, read/retrieve, update dan delete (crud). Dengan API ini kita terbebas dari JDBC API maupun SQL. Java Persistence Query Language (JPQL), berfungsi untuk mengambil (retrieve) data dengan menggunakan bahasa query berorientasi objek. Mekanisme TRANSACTION dan LOCKING pada saat mengakses data secara simultan (bersamaan) dengan menggunakan JAVA TRANSACTION API (JTA). CALLBACK dan LISTENER, untuk menghubungkan logika bisnis yang ada didalam aplikasi dengan LIFECYCLE dari PERSISTENT OBJECT. BAGAIMANA CARA JPA MEMETAKAN OBJECT KEDALAM DATABASE ? Melalui metadata. Didalam setiap entitas akan diberikan metadata yang menjelaskan pemetaan yang akan dilakukan. Metadata inilah yang akan memungkinakan tools/framework mengenali suatu entitas dan menginterpretasikan pemetaan yang akan dilakukan. Metadata ini dapat ditulis dengan 2 cara : 1. ANNOTATIONS, kode program didalam entitas langsung di anotasi (ditandai) dengan menggunakan beberapa anotasi (tanda) yang ada didalam package JAVAX.PERSISTENCE. 2. XML DESCRIPTORS, pemetaan didefinisikan didalam sebuah file XML yang akan di deploy (disimpan ke server) bersamaan dengan entitas. Teknik kedua ini lebih bermanfaat apabila sering terjadi perubahan konfigurasi database.

Upload: doni-andriansyah

Post on 12-May-2015

212 views

Category:

Education


0 download

DESCRIPTION

Java Persistence API merupakan tugas kuliah untuk mata kuliah Object Oriented Programming (OOP). Tugas ini menerapkan konsep OOP yang di integrasikan dengan database SQL. Silahkan unduh melalui www.freak-kutuonline.com.

TRANSCRIPT

Page 1: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

1 Java Persistence API – Doni Andriansyah (14000656)

JAVA PERSISTENCE API (JPA) JPA (Java Persistence API) adalah bahasa pemrograman framework yang memungkinkan developer untuk mengelola relasi data di platform Java Standard Edition (J2SE) dan Java Platform Enterprise Edition (J2EE). JPA merupakan abstraksi tingkat lanjut dari JDBC yang memungkinkan aplikasi terbebas dari bahasa SQL. Semua CLASS dan ANNOTATIONS dari JPA berada dalam package JAVAX.PERSISTENCE . Komponen utama JPA adalah sebagai berikut :

ORM (Object Relational Mapping) , yang merupakan mekanisme untuk memetakan object untuk disimpan didalam relational database.

ENTITY MANAGER API , untuk melakukan operasi yang berhubungan dengan database seperti create, read/retrieve, update dan delete (crud). Dengan API ini kita terbebas dari JDBC API maupun SQL.

Java Persistence Query Language (JPQL) , berfungsi untuk mengambil (retrieve) data dengan menggunakan bahasa query berorientasi objek.

Mekanisme TRANSACTION dan LOCKING pada saat mengakses data secara simultan (bersamaan) dengan menggunakan JAVA TRANSACTION API (JTA).

CALLBACK dan LISTENER, untuk menghubungkan logika bisnis yang ada didalam aplikasi dengan LIFECYCLE dari PERSISTENT OBJECT.

BAGAIMANA CARA JPA MEMETAKAN OBJECT KEDALAM DATABAS E ? � Melalui metadata. � Didalam setiap entitas akan diberikan metadata yang menjelaskan pemetaan yang

akan dilakukan. � Metadata inilah yang akan memungkinakan tools/framework mengenali suatu entitas

dan menginterpretasikan pemetaan yang akan dilakukan. � Metadata ini dapat ditulis dengan 2 cara :

1. ANNOTATIONS , kode program didalam entitas langsung di anotasi (ditandai) dengan menggunakan beberapa anotasi (tanda) yang ada didalam package JAVAX.PERSISTENCE.

2. XML DESCRIPTORS, pemetaan didefinisikan didalam sebuah file XML yang akan di deploy (disimpan ke server) bersamaan dengan entitas. Teknik kedua ini lebih bermanfaat apabila sering terjadi perubahan konfigurasi database.

Page 2: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

2 Java Persistence API – Doni Andriansyah (14000656)

PERANGKAT LUNAK UNTUK PEMETAAN RELATIONAL OBJECT Sesungguhnya mekanisme persistence yang digunakan dalam sebagian besar aplikasi enterprise merupakan relational database. Desain program berorientasi objek dan struktur tabel relational database tidak mungkin mengatur data dalam struktur yang sama persis. Java domain object dapat mencakup sebagian data dari satu tabel database atau berisi data dari beberapa tabel tergantung pada normalisasi dari relational database. Perangkat lunak Object Relational Mapping (ORM) berupaya untuk penyediaan pemetaan ini untuk pengembang OO software tanpa memerlukan banyak koding. Contoh-contoh perangkat lunak ORM yang ada diantaranya Oracle, Toplink dan Hibernate. IMPLEMENTASI Dalam pengimplementasian-nya disini penulis membuat sebuah database penjualan terlebih dahulu yang didalamnya terdapat beberapa tabel-tabel. Aplikasi yang digunakan adalah SQLyog Enterprise 7.1 . Sebelum masuk kedalam pembuatan database dan tabel, terlebih dahulu kita rubah konfigurasi MySQL. Dalam MySQL tipe data default-nya adalah MyISAM , sedangkan untuk dapat merelasikan tabel didalam MySQL semua tabel harus bertipe data InnoDB . Untuk merubah kedalam tipe data InnoDB, lakukan langkah-langkah berikut : 1. Klik Start >> All Programs >> Accessories >> Run . 2. Ketik my.ini (konfigurasi mysql).

Gambar 1. Run

Page 3: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

3 Java Persistence API – Doni Andriansyah (14000656)

3. Akan tampil konfigurasi seperti berikut ini.

Gambar 2. my-Notepad 4. Restart MySQL di dalam apache2triad, jalankan browser Mozilla Firefox / Internet

Explorer. Pada address bar ketik localhost/apache2triadcp .

Gambar 3. localhost/apache2triadcp

Page 4: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

4 Java Persistence API – Doni Andriansyah (14000656)

Note >> Hilangkan tanda cek pada Autostart Mysql , kemudian klik Stop Mysql . Setelah itu beri tanda cek kembali pada Autostart Mysql dan klik Start Mysql .

Sampai langkah ini, MySQL sudah di restart. Lanjutkan dengan membuat database dan tabel-tabel yang dibutuhkan. 1. Jalankan SQLyog Enterprise 7.1

Gambar 4. Interface SQLyog Enterprise 7.1

2. Pilih menu DB >> Create Database..

Gambar 5. Pilih menu DB >> Create Database..

Page 5: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

5 Java Persistence API – Doni Andriansyah (14000656)

3. Ketik “Penjualan” (tanpa tanda kutip) pada kolom Database name . klik Create .

Gambar 6. Create Database

4. Pada panel sebelah kiri layar sudah terdapat nama database “Penjualan”. Klik kanan pada Tables >> Create Table..

Gambar 7. Tables >> Create Table. 5. masukkan field-field yang di butuhkan seperti berikut.

Gambar 8. New Table

Page 6: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

6 Java Persistence API – Doni Andriansyah (14000656)

6. klik Advanced Properties.. , ganti Table type menjadi InnoDB . Klik OK.

Gambar 9. Advance Table Properties. 7. Klik Create Table . Ketik nama tabel yang di inginkan (misal : Customer). Klik OK.

Gambar 10. Create Table >> OK. 8. Jika berhasil maka akan tampil pesan “Table created successfully ”. Klik OK. 9. Lakukan langkah yang sama untuk membuat tabel-tabel yang lainnya (tabel Barang,

Faktur, dan Detail_Faktur).

Page 7: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

7 Java Persistence API – Doni Andriansyah (14000656)

MERELASIKAN TABEL Setelah semua tabel yang dibutuhkan selesai dibuat, langkah selanjutnya adalah merelasikan ke semua tabel. Hal ini dilakukan untuk mengetahui hubungan yang terjadi antar tabel. 1. Pada SQLyog pilih tab SchemaDesigner .

Gambar 11. Schema Designer. 2. Klik dan geser (drag) masing-masing tabel kedalam Schema Designer.

Gambar 12. Tabel didalam Schema Designer

3. Relasikan barang.kd_brg dengan detail_faktur.kd_brg (kd_brg yang ada didalam

tabel barang dengan kd_brg yang ada didalam tabel detail_faktur). Pilih kd_brg didalam tabel barang lalu geser (drag) keatas kd_brg didalam tabel detail_faktur.

Page 8: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

8 Java Persistence API – Doni Andriansyah (14000656)

Gambar 13. Relasi kd_brg. 4. Klik Create . Lakukan hal yang sama untuk tabel merelasikan tabel customer

dengan tabel faktur. 5. Untuk relasi tabel detail_faktur dengan tabel faktur sedikit berbeda, pilih dan klik field

no_faktur didalam tabel detail_faktur kemudian geser (drag) ke field no_faktur didalam tabel faktur.

6. Pada jendela Create Relationship , klik Indexes .

Gambar 14. Create Relationship..

Page 9: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

9 Java Persistence API – Doni Andriansyah (14000656)

7. Klik tombol New untuk membuat indexes foreign key didalam tabel detail_faktur.

Gambar 15. Manage Indexes >> New. 8. Pilih field no_faktur untuk dijadikan foreign key yang nantinya akan direlasikan

dengan no_faktur yang ada didalam tabel faktur. Isi Index name : FK_detail . Klik Apply .

Gambar 16. Create New Indexes.

Page 10: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

10 Java Persistence API – Doni Andriansyah (14000656)

9. Setelah index foreign key untuk no_faktur sudah terbentuk, klik Close .

Gambar 17. Manage Indexes >> Close. 10. Constraint name : FK_detail (diketik). Lalu klik Create .

Gambar 18. Create Relationship >> Create.

Page 11: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

11 Java Persistence API – Doni Andriansyah (14000656)

Berikut hasil relasi tabel didalam Schema Designer.

Gambar 19.Hasil relasi tabel. Berikutnya kita akan mengimplementasikan-nya didalam program Java. Aplikasi yang digunakan adalah NetBeans 6.7.1 ml version . Pastikan anda sudah men-download plugin UML kedalam NetBeans 6.7.1. MEMBUAT MAIN PROJECT 1. Jalankan aplikasi NetBeans 6.7.1.

Gambar 20. Interface NetBeans 6.7.1.

Page 12: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

12 Java Persistence API – Doni Andriansyah (14000656)

2. Klik menu File >> New Project .

Gambar 21. New Project.

Pada kolom Categories pilih Java , pada kolom Projects pilih Java Application . Klik Next .

3. Klik Browse untuk menentukan lokasi penyimpanan file. Ketik nama projek pada kolom Project Name . klik Finish .

Gambar 22. New Java Application.

Page 13: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

13 Java Persistence API – Doni Andriansyah (14000656)

4. Dapat dilihat pada panel Projects main.java sudah terbentuk.

Gambar 23. Main.java.

MENAMBAHKAN LIBRARY MySQL JDBC DRIVER

1. Tambahkan library MySQL kedalam project. Klik kanan pada Libraries >> Add Library .

Gambar 24. Klik kanan libraries.

Page 14: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

14 Java Persistence API – Doni Andriansyah (14000656)

2. Pilih MySQL JDBC Driver >> Add Library .

Gambar 25. Add Library.

MEMBUAT ENTITY CLASS

1. Klik kanan pada project (DevzSale) >> New >> Java Package .

Gambar 26. Membuat Entity Package.

Page 15: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

15 Java Persistence API – Doni Andriansyah (14000656)

2. Ketik devzsale.data pada Package Name . klik Finish .

Gambar 27. New Java Package.

3. Klik kanan pada project (DevzSale) >> New >> Other..

Gambar 28. New File.

Page 16: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

16 Java Persistence API – Doni Andriansyah (14000656)

Pada kolom Categories pilih Persistence , pada File Types pilih Entity Classes from Database . Klik Next .

4. Pada Database Connection pilih JDBC MySQL Driver , jika tidak ada pilih New

Connection.

Gambar 29. New Entity Classes from Database.

Klik Add All untuk memindahkan semua tabel yang ada didalam kolom Available Tables kedalam kolom Selected Tables . Klik Next .

5. Simpan entity classes kedalam package “devzsale.data” . Kemudian klik Create

Persistence Unit .

Gambar 30. New Entity Classes from Database (cont).

Page 17: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

17 Java Persistence API – Doni Andriansyah (14000656)

6. Ganti Persistence Library menjadi Toplink . Pilih Create pada pilihan Table Generation Strategy . Klik Create .

Gambar 31. Create Persistence Unit. 7. Klik Next .

Gambar 32. Entity Classes. 8. Mapping Options , ganti Collection Type menjadi java.util.Set . beri tanda cek

pada Fully Qualified Database Tables Name dan Attributes for Regenerating Tables . Klik Finish .

Page 18: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

18 Java Persistence API – Doni Andriansyah (14000656)

Gambar 33. Mapping Options.

9. Hasilnya terlihat didalam package devzsale.data berikut ini.

Gambar 34. Hasil Mapping Options. MEMBUAT CONTROLLER 1. Klik kanan pada project (DevzSale) >> New >> Java Package. 2. Ketik package name : devzsale.data.controller . klik Finish .

Page 19: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

19 Java Persistence API – Doni Andriansyah (14000656)

Gambar 35. Package Controller. 3. Klik kanan project (DevzSale) >> New >> Other..

Gambar 36. File >> New >> Other. 4. Categories : Persistence , File Types : JPA Controller Classes from Entity

Classes . Klik Next .

Page 20: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

20 Java Persistence API – Doni Andriansyah (14000656)

Gambar 73. New File >> Persistence >> JPA Controller… 5. Klik Add All untuk memindahkan isi kolom Available Entity Classes kedalam

kolom Selected Entity Classes . Klik Next .

Gambar 38. Entity Classes.

Page 21: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

21 Java Persistence API – Doni Andriansyah (14000656)

6. Pada Generate JPA Controller Classes , simpan entity classes kedalam package devzsale.data.controller. klik Finish .

Gambar 39. Generate JPA Controller Classes. Dari rangkaian langkah-langkah diatas, berikut hasilnya.

Gambar 40. DevzSale Project.

Page 22: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

22 Java Persistence API – Doni Andriansyah (14000656)

MEMBUAT MODEL DIAGRAM (CLASS DIAGRAM) 1. Klik kanan pada project (DevzSale) >> Reverse Engineer..

Gambar 41. Reverse Engineer. 2. Pada jendela Reverse Engineer , klik OK.

Gambar 42. Reverse Engineer (cont).

Page 23: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

23 Java Persistence API – Doni Andriansyah (14000656)

3. Perhatikan pada panel Project , disana sudah terdapat model diagram (DevzSale-Model1) .

4. Klik kanan Diagrams >> New >> Diagram .

Gambar 43. Diagrams. 5. Pilih Class Diagram pada Diagram Type .

Gambar 44. Create New Diagram.

6. Klik Finish . 7. Pada DevzSale-Model1 klik tanda [+] pada Diagrams . Klik kanan Class Diagram1

>> Open .

Page 24: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

24 Java Persistence API – Doni Andriansyah (14000656)

Gambar 44. Class Diagram. 8. Masuk kedalam DevzSale-Model1 >> Model >> devzsale >> data . Klik dan geser

(drag) semua entitas tabel kedalam class diagram1.

Gambar 45. Class Diagram (cont). Langkah diatas merupakan langkah terakhir dari perjalanan panjang untuk menghasilkan sebuah Object Relational Mapping (ORM) .

Page 25: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

25 Java Persistence API – Doni Andriansyah (14000656)

KODING Main.java

Barang.java /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package devzsale.data; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; import javax.persistence.Table; /** * * @author devz kutuonline */ @Entity

Page 26: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

26 Java Persistence API – Doni Andriansyah (14000656)

@Table(name = "barang", catalog = "penjualan", schema = "") @NamedQueries({@NamedQuery(name = "Barang.findAll", query = "SELECT b FROM Barang b"), @NamedQuery(name = "Barang.findByKdBrg", query = "SELECT b FROM Barang b WHERE b.kdBrg = :kdBrg"), @NamedQuery(name = "Barang.findByNamaBrg", query = "SELECT b FROM Barang b WHERE b.namaBrg = :namaBrg"), @NamedQuery(name = "Barang.findByHarga", query = "SELECT b FROM Barang b WHERE b.harga = :harga")}) public class Barang implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = "kd_brg", nullable = false, length = 5) private String kdBrg; @Basic(optional = false) @Column(name = "nama_brg", nullable = false, length = 30) private String namaBrg; @Basic(optional = false) @Column(name = "harga", nullable = false) private double harga; @JoinColumn(name = "kd_brg", referencedColumnName = "kd_brg", nullable = false, insertable = false, updatable = false) @OneToOne(optional = false) private DetailFaktur detailFaktur; public Barang() { } public Barang(String kdBrg) { this.kdBrg = kdBrg; } public Barang(String kdBrg, String namaBrg, double harga) { this.kdBrg = kdBrg; this.namaBrg = namaBrg; this.harga = harga; } public String getKdBrg() { return kdBrg; } public void setKdBrg(String kdBrg) { this.kdBrg = kdBrg; } public String getNamaBrg() { return namaBrg; } public void setNamaBrg(String namaBrg) { this.namaBrg = namaBrg; }

Page 27: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

27 Java Persistence API – Doni Andriansyah (14000656)

public double getHarga() { return harga; } public void setHarga(double harga) { this.harga = harga; } public DetailFaktur getDetailFaktur() { return detailFaktur; } public void setDetailFaktur(DetailFaktur detailFaktur) { this.detailFaktur = detailFaktur; } @Override public int hashCode() { int hash = 0; hash += (kdBrg != null ? kdBrg.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Barang)) { return false; } Barang other = (Barang) object; if ((this.kdBrg == null && other.kdBrg != null) || (this.kdBrg != null && !this.kdBrg.equals(other.kdBrg))) { return false; } return true; } @Override public String toString() { return "devzsale.data.Barang[kdBrg=" + kdBrg + "]"; } } Customer.java /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package devzsale.data;

Page 28: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

28 Java Persistence API – Doni Andriansyah (14000656)

import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; import javax.persistence.Table; /** * * @author devz kutuonline */ @Entity @Table(name = "customer", catalog = "penjualan", schema = "") @NamedQueries({@NamedQuery(name = "Customer.findAll", query = "SELECT c FROM Customer c"), @NamedQuery(name = "Customer.findByIdCust", query = "SELECT c FROM Customer c WHERE c.idCust = :idCust"), @NamedQuery(name = "Customer.findByNamaCust", query = "SELECT c FROM Customer c WHERE c.namaCust = :namaCust"), @NamedQuery(name = "Customer.findByAlamat", query = "SELECT c FROM Customer c WHERE c.alamat = :alamat"), @NamedQuery(name = "Customer.findByNoTelp", query = "SELECT c FROM Customer c WHERE c.noTelp = :noTelp")}) public class Customer implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = "id_cust", nullable = false, length = 5) private String idCust; @Basic(optional = false) @Column(name = "nama_cust", nullable = false, length = 30) private String namaCust; @Basic(optional = false) @Column(name = "alamat", nullable = false, length = 50) private String alamat; @Basic(optional = false) @Column(name = "no_telp", nullable = false, length = 12) private String noTelp; @JoinColumn(name = "id_cust", referencedColumnName = "id_cust", nullable = false, insertable = false, updatable = false) @OneToOne(optional = false) private Faktur faktur; public Customer() { } public Customer(String idCust) { this.idCust = idCust; }

Page 29: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

29 Java Persistence API – Doni Andriansyah (14000656)

public Customer(String idCust, String namaCust, String alamat, String noTelp) { this.idCust = idCust; this.namaCust = namaCust; this.alamat = alamat; this.noTelp = noTelp; } public String getIdCust() { return idCust; } public void setIdCust(String idCust) { this.idCust = idCust; } public String getNamaCust() { return namaCust; } public void setNamaCust(String namaCust) { this.namaCust = namaCust; } public String getAlamat() { return alamat; } public void setAlamat(String alamat) { this.alamat = alamat; } public String getNoTelp() { return noTelp; } public void setNoTelp(String noTelp) { this.noTelp = noTelp; } public Faktur getFaktur() { return faktur; } public void setFaktur(Faktur faktur) { this.faktur = faktur; } @Override public int hashCode() { int hash = 0;

Page 30: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

30 Java Persistence API – Doni Andriansyah (14000656)

hash += (idCust != null ? idCust.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Customer)) { return false; } Customer other = (Customer) object; if ((this.idCust == null && other.idCust != null) || (this.idCust != null && !this.idCust.equals(other.idCust))) { return false; } return true; } @Override public String toString() { return "devzsale.data.Customer[idCust=" + idCust + "]"; } } Faktur.java /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package devzsale.data; import java.io.Serializable; import java.util.Date; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * * @author devz kutuonline

Page 31: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

31 Java Persistence API – Doni Andriansyah (14000656)

*/ @Entity @Table(name = "faktur", catalog = "penjualan", schema = "") @NamedQueries({@NamedQuery(name = "Faktur.findAll", query = "SELECT f FROM Faktur f"), @NamedQuery(name = "Faktur.findByNoFaktur", query = "SELECT f FROM Faktur f WHERE f.noFaktur = :noFaktur"), @NamedQuery(name = "Faktur.findByTglFaktur", query = "SELECT f FROM Faktur f WHERE f.tglFaktur = :tglFaktur"), @NamedQuery(name = "Faktur.findByIdCust", query = "SELECT f FROM Faktur f WHERE f.idCust = :idCust"), @NamedQuery(name = "Faktur.findByTotalByr", query = "SELECT f FROM Faktur f WHERE f.totalByr = :totalByr")}) public class Faktur implements Serializable { private static final long serialVersionUID = 1L; @Id @Basic(optional = false) @Column(name = "no_faktur", nullable = false, length = 5) private String noFaktur; @Basic(optional = false) @Column(name = "tgl_faktur", nullable = false) @Temporal(TemporalType.DATE) private Date tglFaktur; @Basic(optional = false) @Column(name = "id_cust", nullable = false, length = 5) private String idCust; @Basic(optional = false) @Column(name = "total_byr", nullable = false) private double totalByr; @JoinColumn(name = "no_faktur", referencedColumnName = "no_faktur", nullable = false, insertable = false, updatable = false) @OneToOne(optional = false) private DetailFaktur detailFaktur; @OneToOne(cascade = CascadeType.ALL, mappedBy = "faktur") private Customer customer; public Faktur() { } public Faktur(String noFaktur) { this.noFaktur = noFaktur; } public Faktur(String noFaktur, Date tglFaktur, String idCust, double totalByr) { this.noFaktur = noFaktur; this.tglFaktur = tglFaktur; this.idCust = idCust; this.totalByr = totalByr; } public String getNoFaktur() { return noFaktur; }

Page 32: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

32 Java Persistence API – Doni Andriansyah (14000656)

public void setNoFaktur(String noFaktur) { this.noFaktur = noFaktur; } public Date getTglFaktur() { return tglFaktur; } public void setTglFaktur(Date tglFaktur) { this.tglFaktur = tglFaktur; } public String getIdCust() { return idCust; } public void setIdCust(String idCust) { this.idCust = idCust; } public double getTotalByr() { return totalByr; } public void setTotalByr(double totalByr) { this.totalByr = totalByr; } public DetailFaktur getDetailFaktur() { return detailFaktur; } public void setDetailFaktur(DetailFaktur detailFaktur) { this.detailFaktur = detailFaktur; } public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } @Override public int hashCode() { int hash = 0; hash += (noFaktur != null ? noFaktur.hashCode() : 0); return hash; }

Page 33: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

33 Java Persistence API – Doni Andriansyah (14000656)

@Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Faktur)) { return false; } Faktur other = (Faktur) object; if ((this.noFaktur == null && other.noFaktur != null) || (this.noFaktur != null && !this.noFaktur.equals(other.noFaktur))) { return false; } return true; } @Override public String toString() { return "devzsale.data.Faktur[noFaktur=" + noFaktur + "]"; } } DetailFaktur.java /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package devzsale.data; import java.io.Serializable; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; import javax.persistence.Table; /** * * @author devz kutuonline */ @Entity @Table(name = "detail_faktur", catalog = "penjualan", schema = "")

Page 34: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

34 Java Persistence API – Doni Andriansyah (14000656)

@NamedQueries({@NamedQuery(name = "DetailFaktur.findAll", query = "SELECT d FROM DetailFaktur d"), @NamedQuery(name = "DetailFaktur.findByIdDetail", query = "SELECT d FROM DetailFaktur d WHERE d.idDetail = :idDetail"), @NamedQuery(name = "DetailFaktur.findByKdBrg", query = "SELECT d FROM DetailFaktur d WHERE d.kdBrg = :kdBrg"), @NamedQuery(name = "DetailFaktur.findByQty", query = "SELECT d FROM DetailFaktur d WHERE d.qty = :qty"), @NamedQuery(name = "DetailFaktur.findBySubtotal", query = "SELECT d FROM DetailFaktur d WHERE d.subtotal = :subtotal")}) public class DetailFaktur implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id_detail", nullable = false) private Integer idDetail; @Basic(optional = false) @Column(name = "kd_brg", nullable = false, length = 5) private String kdBrg; @Basic(optional = false) @Column(name = "qty", nullable = false) private int qty; @Basic(optional = false) @Column(name = "subtotal", nullable = false) private double subtotal; @OneToOne(cascade = CascadeType.ALL, mappedBy = "detailFaktur") private Barang barang; @JoinColumn(name = "no_faktur", referencedColumnName = "no_faktur", nullable = false) @ManyToOne(optional = false) private Faktur noFaktur; public DetailFaktur() { } public DetailFaktur(Integer idDetail) { this.idDetail = idDetail; } public DetailFaktur(Integer idDetail, String kdBrg, int qty, double subtotal) { this.idDetail = idDetail; this.kdBrg = kdBrg; this.qty = qty; this.subtotal = subtotal; } public Integer getIdDetail() { return idDetail; } public void setIdDetail(Integer idDetail) { this.idDetail = idDetail; }

Page 35: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

35 Java Persistence API – Doni Andriansyah (14000656)

public String getKdBrg() { return kdBrg; } public void setKdBrg(String kdBrg) { this.kdBrg = kdBrg; } public int getQty() { return qty; } public void setQty(int qty) { this.qty = qty; } public double getSubtotal() { return subtotal; } public void setSubtotal(double subtotal) { this.subtotal = subtotal; } public Barang getBarang() { return barang; } public void setBarang(Barang barang) { this.barang = barang; } public Faktur getNoFaktur() { return noFaktur; } public void setNoFaktur(Faktur noFaktur) { this.noFaktur = noFaktur; } @Override public int hashCode() { int hash = 0; hash += (idDetail != null ? idDetail.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof DetailFaktur)) {

Page 36: Java persistence api

www.freak-kutuonline.com copyleft @ 2012. All right reserved.

36 Java Persistence API – Doni Andriansyah (14000656)

return false; } DetailFaktur other = (DetailFaktur) object; if ((this.idDetail == null && other.idDetail != null) || (this.idDetail != null && !this.idDetail.equals(other.idDetail))) { return false; } return true; } @Override public String toString() { return "devzsale.data.DetailFaktur[idDetail=" + idDetail + "]"; } } Persistence.xml