Your SlideShare is downloading. ×
Java persistence api
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Java persistence api

166
views

Published on

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 …

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.

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
166
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Java Persistence API – Doni Andriansyah (14000656) 1JAVA PERSISTENCE API (JPA)JPA (Java Persistence API) adalah bahasa pemrograman framework yangmemungkinkan 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 aplikasiterbebas dari bahasa SQL.Semua CLASS dan ANNOTATIONS dari JPA berada dalam packageJAVAX.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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 2. Java Persistence API – Doni Andriansyah (14000656) 2PERANGKAT LUNAK UNTUK PEMETAAN RELATIONAL OBJECTSesungguhnya mekanisme persistence yang digunakan dalam sebagian besar aplikasienterprise merupakan relational database. Desain program berorientasi objek danstruktur tabel relational database tidak mungkin mengatur data dalam struktur yangsama persis. Java domain object dapat mencakup sebagian data dari satu tabeldatabase atau berisi data dari beberapa tabel tergantung pada normalisasi darirelational database.Perangkat lunak Object Relational Mapping (ORM) berupaya untuk penyediaanpemetaan ini untuk pengembang OO software tanpa memerlukan banyak koding.Contoh-contoh perangkat lunak ORM yang ada diantaranya Oracle, Toplink danHibernate.IMPLEMENTASIDalam pengimplementasian-nya disini penulis membuat sebuah database penjualanterlebih dahulu yang didalamnya terdapat beberapa tabel-tabel. Aplikasi yangdigunakan adalah SQLyog Enterprise 7.1.Sebelum masuk kedalam pembuatan database dan tabel, terlebih dahulu kita rubahkonfigurasi MySQL. Dalam MySQL tipe data default-nya adalah MyISAM, sedangkanuntuk 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. Runwww.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 3. Java Persistence API – Doni Andriansyah (14000656) 33. Akan tampil konfigurasi seperti berikut ini. Gambar 2. my-Notepad4. Restart MySQL di dalam apache2triad, jalankan browser Mozilla Firefox / Internet Explorer. Pada address bar ketik localhost/apache2triadcp. Gambar 3. localhost/apache2triadcpwww.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 4. Java Persistence API – Doni Andriansyah (14000656) 4 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 dantabel-tabel yang dibutuhkan.1. Jalankan SQLyog Enterprise 7.1 Gambar 4. Interface SQLyog Enterprise 7.12. Pilih menu DB >> Create Database.. Gambar 5. Pilih menu DB >> Create Database..www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 5. Java Persistence API – Doni Andriansyah (14000656) 5 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 Tablewww.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 6. Java Persistence API – Doni Andriansyah (14000656) 66. 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).www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 7. Java Persistence API – Doni Andriansyah (14000656) 7MERELASIKAN TABELSetelah semua tabel yang dibutuhkan selesai dibuat, langkah selanjutnya adalahmerelasikan ke semua tabel. Hal ini dilakukan untuk mengetahui hubungan yang terjadiantar 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 Designer3. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 8. Java Persistence API – Doni Andriansyah (14000656) 8 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..www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 9. Java Persistence API – Doni Andriansyah (14000656) 97. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 10. Java Persistence API – Doni Andriansyah (14000656) 109. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 11. Java Persistence API – Doni Andriansyah (14000656) 11Berikut hasil relasi tabel didalam Schema Designer. Gambar 19.Hasil relasi tabel.Berikutnya kita akan mengimplementasikan-nya didalam program Java. Aplikasi yangdigunakan adalah NetBeans 6.7.1 ml version. Pastikan anda sudah men-downloadplugin UML kedalam NetBeans 6.7.1.MEMBUAT MAIN PROJECT1. Jalankan aplikasi NetBeans 6.7.1. Gambar 20. Interface NetBeans 6.7.1.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 12. Java Persistence API – Doni Andriansyah (14000656) 122. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 13. Java Persistence API – Doni Andriansyah (14000656) 134. Dapat dilihat pada panel Projects main.java sudah terbentuk. Gambar 23. Main.java.MENAMBAHKAN LIBRARY MySQL JDBC DRIVER1. Tambahkan library MySQL kedalam project. Klik kanan pada Libraries >> Add Library. Gambar 24. Klik kanan libraries.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 14. Java Persistence API – Doni Andriansyah (14000656) 142. Pilih MySQL JDBC Driver >> Add Library. Gambar 25. Add Library.MEMBUAT ENTITY CLASS1. Klik kanan pada project (DevzSale) >> New >> Java Package. Gambar 26. Membuat Entity Package.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 15. Java Persistence API – Doni Andriansyah (14000656) 152. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 16. Java Persistence API – Doni Andriansyah (14000656) 16 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).www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 17. Java Persistence API – Doni Andriansyah (14000656) 176. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 18. Java Persistence API – Doni Andriansyah (14000656) 18 Gambar 33. Mapping Options.9. Hasilnya terlihat didalam package devzsale.data berikut ini. Gambar 34. Hasil Mapping Options.MEMBUAT CONTROLLER1. Klik kanan pada project (DevzSale) >> New >> Java Package.2. Ketik package name : devzsale.data.controller. klik Finish.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 19. Java Persistence API – Doni Andriansyah (14000656) 19 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 20. Java Persistence API – Doni Andriansyah (14000656) 20 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 21. Java Persistence API – Doni Andriansyah (14000656) 216. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 22. Java Persistence API – Doni Andriansyah (14000656) 22MEMBUAT 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).www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 23. Java Persistence API – Doni Andriansyah (14000656) 233. 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.www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 24. Java Persistence API – Doni Andriansyah (14000656) 24 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 untukmenghasilkan sebuah Object Relational Mapping (ORM).www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 25. Java Persistence API – Doni Andriansyah (14000656) 25KODINGMain.javaBarang.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 */@Entitywww.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 26. Java Persistence API – Doni Andriansyah (14000656) 26@Table(name = "barang", catalog = "penjualan", schema = "")@NamedQueries({@NamedQuery(name = "Barang.findAll", query = "SELECT b FROM Barangb"), @NamedQuery(name = "Barang.findByKdBrg", query = "SELECT b FROM Barang bWHERE 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; }www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 27. Java Persistence API – Doni Andriansyah (14000656) 27 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 wont 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;www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 28. Java Persistence API – Doni Andriansyah (14000656) 28import 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 FROMCustomer c"), @NamedQuery(name = "Customer.findByIdCust", query = "SELECT c FROMCustomer 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 cWHERE 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; }www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 29. Java Persistence API – Doni Andriansyah (14000656) 29 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;www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 30. Java Persistence API – Doni Andriansyah (14000656) 30 hash += (idCust != null ? idCust.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method wont 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 kutuonlinewww.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 31. Java Persistence API – Doni Andriansyah (14000656) 31 */@Entity@Table(name = "faktur", catalog = "penjualan", schema = "")@NamedQueries({@NamedQuery(name = "Faktur.findAll", query = "SELECT f FROM Fakturf"), @NamedQuery(name = "Faktur.findByNoFaktur", query = "SELECT f FROM Faktur fWHERE 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 WHEREf.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; }www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 32. Java Persistence API – Doni Andriansyah (14000656) 32 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; }www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 33. Java Persistence API – Doni Andriansyah (14000656) 33 @Override public boolean equals(Object object) { // TODO: Warning - this method wont 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 = "")www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 34. Java Persistence API – Doni Andriansyah (14000656) 34@NamedQueries({@NamedQuery(name = "DetailFaktur.findAll", query = "SELECT d FROMDetailFaktur d"), @NamedQuery(name = "DetailFaktur.findByIdDetail", query = "SELECT dFROM 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 FROMDetailFaktur 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; }www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 35. Java Persistence API – Doni Andriansyah (14000656) 35 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 wont work in the case the id fields are not set if (!(object instanceof DetailFaktur)) {www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 36. Java Persistence API – Doni Andriansyah (14000656) 36 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.xmlwww.freak-kutuonline.com copyleft @ 2012. All right reserved.