SlideShare a Scribd company logo
1 of 36
Download to read offline
Java Persistence API – Doni Andriansyah (14000656)            1



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.




www.freak-kutuonline.com                                   copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)          2


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




www.freak-kutuonline.com                                copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)             3


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




www.freak-kutuonline.com                                       copyleft @ 2012. All right reserved.
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 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..


www.freak-kutuonline.com                                         copyleft @ 2012. All right reserved.
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 Table

www.freak-kutuonline.com                                     copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)               6


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).




www.freak-kutuonline.com                                      copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)             7


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.


www.freak-kutuonline.com                                       copyleft @ 2012. All right reserved.
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.
Java Persistence API – Doni Andriansyah (14000656)               9




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.

www.freak-kutuonline.com                                      copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)              10


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.



www.freak-kutuonline.com                                        copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)               11


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.

www.freak-kutuonline.com                                       copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)               12


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.



www.freak-kutuonline.com                                      copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)                 13


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.




www.freak-kutuonline.com                                        copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)            14


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.


www.freak-kutuonline.com                                   copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)              15


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.



www.freak-kutuonline.com                                   copyleft @ 2012. All right reserved.
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.
Java Persistence API – Doni Andriansyah (14000656)              17


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.



www.freak-kutuonline.com                                     copyleft @ 2012. All right reserved.
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 CONTROLLER

1. 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.
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.
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.
Java Persistence API – Doni Andriansyah (14000656)              21


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.




www.freak-kutuonline.com                                         copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)             22


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).

www.freak-kutuonline.com                                    copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)               23


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.



www.freak-kutuonline.com                                    copyleft @ 2012. All right reserved.
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      untuk
menghasilkan sebuah Object Relational Mapping (ORM).




www.freak-kutuonline.com                                      copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)          25


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

www.freak-kutuonline.com                                    copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)            26


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


www.freak-kutuonline.com                                        copyleft @ 2012. All right reserved.
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 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;


www.freak-kutuonline.com                                           copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)          28



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

www.freak-kutuonline.com                                  copyleft @ 2012. All right reserved.
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.
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 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


www.freak-kutuonline.com                                         copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)             31


 */
@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;
  }


www.freak-kutuonline.com                                         copyleft @ 2012. All right reserved.
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.
Java Persistence API – Doni Andriansyah (14000656)              33


   @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 = "")


www.freak-kutuonline.com                                            copyleft @ 2012. All right reserved.
Java Persistence API – Doni Andriansyah (14000656)            34


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


www.freak-kutuonline.com                                           copyleft @ 2012. All right reserved.
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 won't work in the case the id fields are not set
    if (!(object instanceof DetailFaktur)) {

www.freak-kutuonline.com                                        copyleft @ 2012. All right reserved.
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.xml




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

More Related Content

What's hot

Pertemuan 3 activity
Pertemuan 3 activityPertemuan 3 activity
Pertemuan 3 activityheriakj
 
Pertemuan 6 tabview
Pertemuan 6 tabviewPertemuan 6 tabview
Pertemuan 6 tabviewheriakj
 
Pertemuan 2 desain user interface
Pertemuan 2 desain user interfacePertemuan 2 desain user interface
Pertemuan 2 desain user interfaceheriakj
 
Pertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuPertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuheriakj
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVCrizki adam kurniawan
 
Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000
Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000
Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000Nurdin Al-Azies
 
Modul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoModul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoYatno Sudar
 
Menggunakan database di android
Menggunakan database di androidMenggunakan database di android
Menggunakan database di androidInto Setiawan
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukAgus Haryanto
 
Visual basic 6
Visual basic 6Visual basic 6
Visual basic 6safarinet
 
Dasar pemrograman-visual-basic1
Dasar pemrograman-visual-basic1Dasar pemrograman-visual-basic1
Dasar pemrograman-visual-basic1Afifa Rosyida
 
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android SederhanaTutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhanacreatorb dev
 
Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhirahmadranddy
 
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorbTutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorbcreatorb dev
 
E commerce dengan php mysql.docx
E commerce dengan php mysql.docxE commerce dengan php mysql.docx
E commerce dengan php mysql.docxCandra Adi Putra
 
Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4Renhard Manurung
 
Pemrograman akuntansi visual basic finish
Pemrograman akuntansi visual basic finishPemrograman akuntansi visual basic finish
Pemrograman akuntansi visual basic finishTresna Jm
 

What's hot (19)

Pertemuan 3 activity
Pertemuan 3 activityPertemuan 3 activity
Pertemuan 3 activity
 
Pertemuan 6 tabview
Pertemuan 6 tabviewPertemuan 6 tabview
Pertemuan 6 tabview
 
Pertemuan 2 desain user interface
Pertemuan 2 desain user interfacePertemuan 2 desain user interface
Pertemuan 2 desain user interface
 
Pertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menuPertemuan 9 preferences dan menu
Pertemuan 9 preferences dan menu
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
 
Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000
Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000
Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000
 
Modul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android SudaryatnoModul praktikum 17 - Android Sudaryatno
Modul praktikum 17 - Android Sudaryatno
 
Dasar Java Mobile
Dasar Java MobileDasar Java Mobile
Dasar Java Mobile
 
Menggunakan database di android
Menggunakan database di androidMenggunakan database di android
Menggunakan database di android
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog Produk
 
Visual basic 6
Visual basic 6Visual basic 6
Visual basic 6
 
Dasar pemrograman-visual-basic1
Dasar pemrograman-visual-basic1Dasar pemrograman-visual-basic1
Dasar pemrograman-visual-basic1
 
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android SederhanaTutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
 
Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhir
 
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorbTutorial Cara Membuat Aplikasi RSS Android - creatorb
Tutorial Cara Membuat Aplikasi RSS Android - creatorb
 
E commerce dengan php mysql.docx
E commerce dengan php mysql.docxE commerce dengan php mysql.docx
E commerce dengan php mysql.docx
 
Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4Visual basic 6 tutorial its 4
Visual basic 6 tutorial its 4
 
4. isi
4. isi4. isi
4. isi
 
Pemrograman akuntansi visual basic finish
Pemrograman akuntansi visual basic finishPemrograman akuntansi visual basic finish
Pemrograman akuntansi visual basic finish
 

Similar to Java persistence api

Membuat laporan menggunakan i report 5 by depandi enda
Membuat laporan menggunakan i report 5   by depandi endaMembuat laporan menggunakan i report 5   by depandi enda
Membuat laporan menggunakan i report 5 by depandi endaDevandy Enda
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiRakhmat Dedi Gunawan
 
Tugas struktur data
Tugas struktur dataTugas struktur data
Tugas struktur dataDevandy Enda
 
Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhirahmadranddy
 
E commerce dengan php mysql
E commerce dengan php mysqlE commerce dengan php mysql
E commerce dengan php mysqlAlvin Setiawan
 
05 pzt web programming jdbc hibernate. kelompok 7
05 pzt web programming jdbc hibernate. kelompok 705 pzt web programming jdbc hibernate. kelompok 7
05 pzt web programming jdbc hibernate. kelompok 7pinnsyl
 
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...GITS Indonesia
 
Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)Devi Apriansyah
 
Tugas1 Software Engineering doni 14000656
Tugas1 Software Engineering doni 14000656Tugas1 Software Engineering doni 14000656
Tugas1 Software Engineering doni 14000656Doni Andriansyah
 
Siti Aisyah XII RPL1_Tugas Akhir Basis Data.pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data.pdfSiti Aisyah XII RPL1_Tugas Akhir Basis Data.pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data.pdfSitiAisyah324270
 
Siti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdfSiti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdfSitiAisyah324270
 
Siti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdfSiti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdfSitiAisyah324270
 
Distributed Database Using Oracle
Distributed Database Using OracleDistributed Database Using Oracle
Distributed Database Using OracleLaboratorium Sirkel
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrudmales Aja
 
Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di androidInto Setiawan
 
new Chapter 10 - Report Kwitansi.pdf
new Chapter 10 - Report Kwitansi.pdfnew Chapter 10 - Report Kwitansi.pdf
new Chapter 10 - Report Kwitansi.pdfrahmantoyuri
 

Similar to Java persistence api (20)

Pemanfaatan sql server dengan vb6
Pemanfaatan sql server dengan vb6Pemanfaatan sql server dengan vb6
Pemanfaatan sql server dengan vb6
 
Membuat laporan menggunakan i report 5 by depandi enda
Membuat laporan menggunakan i report 5   by depandi endaMembuat laporan menggunakan i report 5   by depandi enda
Membuat laporan menggunakan i report 5 by depandi enda
 
Modul mvc part 1
Modul mvc part 1Modul mvc part 1
Modul mvc part 1
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report Kwitansi
 
Tugas struktur data
Tugas struktur dataTugas struktur data
Tugas struktur data
 
Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhir
 
E commerce dengan php mysql
E commerce dengan php mysqlE commerce dengan php mysql
E commerce dengan php mysql
 
05 pzt web programming jdbc hibernate. kelompok 7
05 pzt web programming jdbc hibernate. kelompok 705 pzt web programming jdbc hibernate. kelompok 7
05 pzt web programming jdbc hibernate. kelompok 7
 
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
 
Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)
 
Tugas1 Software Engineering doni 14000656
Tugas1 Software Engineering doni 14000656Tugas1 Software Engineering doni 14000656
Tugas1 Software Engineering doni 14000656
 
Siti Aisyah XII RPL1_Tugas Akhir Basis Data.pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data.pdfSiti Aisyah XII RPL1_Tugas Akhir Basis Data.pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data.pdf
 
Siti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdfSiti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL1_Tugas Akhir Basis Data (Ganjil).pdf
 
Siti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdfSiti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdf
Siti Aisyah XII RPL 1_Tugas Akhir Basis Data (Ganjil).pdf
 
Chapter 01 - Pembuatan Database
Chapter 01 - Pembuatan DatabaseChapter 01 - Pembuatan Database
Chapter 01 - Pembuatan Database
 
Distributed Database Using Oracle
Distributed Database Using OracleDistributed Database Using Oracle
Distributed Database Using Oracle
 
Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrud
 
Program database sederhana di android
Program database sederhana di androidProgram database sederhana di android
Program database sederhana di android
 
new Chapter 10 - Report Kwitansi.pdf
new Chapter 10 - Report Kwitansi.pdfnew Chapter 10 - Report Kwitansi.pdf
new Chapter 10 - Report Kwitansi.pdf
 
ASP MVC
ASP MVCASP MVC
ASP MVC
 

More from Doni Andriansyah

C++ Latihan Percabangan KPR
C++ Latihan Percabangan KPRC++ Latihan Percabangan KPR
C++ Latihan Percabangan KPRDoni Andriansyah
 
Lembar kontribusi pengerjaan tugas kelompok
Lembar kontribusi pengerjaan tugas kelompokLembar kontribusi pengerjaan tugas kelompok
Lembar kontribusi pengerjaan tugas kelompokDoni Andriansyah
 
Sisfo akademik #1 - data kelas
Sisfo akademik #1 - data kelasSisfo akademik #1 - data kelas
Sisfo akademik #1 - data kelasDoni Andriansyah
 
Modul web design - studi kasus website portal berita
Modul web design - studi kasus website portal beritaModul web design - studi kasus website portal berita
Modul web design - studi kasus website portal beritaDoni Andriansyah
 
Java Web Form Pendaftaran - JSP
Java Web Form Pendaftaran - JSPJava Web Form Pendaftaran - JSP
Java Web Form Pendaftaran - JSPDoni Andriansyah
 
Java web application 2 - membuat template web
Java web application 2 - membuat template webJava web application 2 - membuat template web
Java web application 2 - membuat template webDoni Andriansyah
 
Web Programming 1 - dbKursus
Web Programming 1 - dbKursusWeb Programming 1 - dbKursus
Web Programming 1 - dbKursusDoni Andriansyah
 
C++ Array Percabangan Rental VCD DVD Video Mart
C++ Array Percabangan Rental VCD DVD Video MartC++ Array Percabangan Rental VCD DVD Video Mart
C++ Array Percabangan Rental VCD DVD Video MartDoni Andriansyah
 
Web Programming - DB Galeri Foto
Web Programming - DB Galeri FotoWeb Programming - DB Galeri Foto
Web Programming - DB Galeri FotoDoni Andriansyah
 
Web Programming - Simpan Tampil Customer
Web Programming - Simpan Tampil CustomerWeb Programming - Simpan Tampil Customer
Web Programming - Simpan Tampil CustomerDoni Andriansyah
 
Web Programming - DB Buku Tamu
Web Programming - DB Buku TamuWeb Programming - DB Buku Tamu
Web Programming - DB Buku TamuDoni Andriansyah
 
Web Programming - Toko Bunga Red Flower
Web Programming - Toko Bunga Red FlowerWeb Programming - Toko Bunga Red Flower
Web Programming - Toko Bunga Red FlowerDoni Andriansyah
 
C++ Array Gerobak Fried Chicken
C++ Array Gerobak Fried ChickenC++ Array Gerobak Fried Chicken
C++ Array Gerobak Fried ChickenDoni Andriansyah
 
Nuri proposal penelitian-doni andriansyah (sem)
Nuri proposal penelitian-doni andriansyah (sem)Nuri proposal penelitian-doni andriansyah (sem)
Nuri proposal penelitian-doni andriansyah (sem)Doni Andriansyah
 
Project charter tugas uas project management
Project charter   tugas uas project managementProject charter   tugas uas project management
Project charter tugas uas project managementDoni Andriansyah
 

More from Doni Andriansyah (20)

Ecommerce for everybody
Ecommerce for everybodyEcommerce for everybody
Ecommerce for everybody
 
C++ Latihan Percabangan KPR
C++ Latihan Percabangan KPRC++ Latihan Percabangan KPR
C++ Latihan Percabangan KPR
 
C++ Laundry kiloan murmer
C++ Laundry kiloan murmerC++ Laundry kiloan murmer
C++ Laundry kiloan murmer
 
Lembar kontribusi pengerjaan tugas kelompok
Lembar kontribusi pengerjaan tugas kelompokLembar kontribusi pengerjaan tugas kelompok
Lembar kontribusi pengerjaan tugas kelompok
 
Sisfo akademik #1 - data kelas
Sisfo akademik #1 - data kelasSisfo akademik #1 - data kelas
Sisfo akademik #1 - data kelas
 
Modul web design - studi kasus website portal berita
Modul web design - studi kasus website portal beritaModul web design - studi kasus website portal berita
Modul web design - studi kasus website portal berita
 
Java Web Form Pendaftaran - JSP
Java Web Form Pendaftaran - JSPJava Web Form Pendaftaran - JSP
Java Web Form Pendaftaran - JSP
 
Java web application 2 - membuat template web
Java web application 2 - membuat template webJava web application 2 - membuat template web
Java web application 2 - membuat template web
 
Java web application 1
Java web application 1Java web application 1
Java web application 1
 
Wp2 keranjang belanja
Wp2   keranjang belanjaWp2   keranjang belanja
Wp2 keranjang belanja
 
Web Programming 1 - dbKursus
Web Programming 1 - dbKursusWeb Programming 1 - dbKursus
Web Programming 1 - dbKursus
 
C++ Array Percabangan Rental VCD DVD Video Mart
C++ Array Percabangan Rental VCD DVD Video MartC++ Array Percabangan Rental VCD DVD Video Mart
C++ Array Percabangan Rental VCD DVD Video Mart
 
Web Programming - DB Galeri Foto
Web Programming - DB Galeri FotoWeb Programming - DB Galeri Foto
Web Programming - DB Galeri Foto
 
Web Programming - Simpan Tampil Customer
Web Programming - Simpan Tampil CustomerWeb Programming - Simpan Tampil Customer
Web Programming - Simpan Tampil Customer
 
Web Programming - DB Buku Tamu
Web Programming - DB Buku TamuWeb Programming - DB Buku Tamu
Web Programming - DB Buku Tamu
 
Web Programming - Toko Bunga Red Flower
Web Programming - Toko Bunga Red FlowerWeb Programming - Toko Bunga Red Flower
Web Programming - Toko Bunga Red Flower
 
C++ Array Gerobak Fried Chicken
C++ Array Gerobak Fried ChickenC++ Array Gerobak Fried Chicken
C++ Array Gerobak Fried Chicken
 
Remastering linux slax
Remastering linux slaxRemastering linux slax
Remastering linux slax
 
Nuri proposal penelitian-doni andriansyah (sem)
Nuri proposal penelitian-doni andriansyah (sem)Nuri proposal penelitian-doni andriansyah (sem)
Nuri proposal penelitian-doni andriansyah (sem)
 
Project charter tugas uas project management
Project charter   tugas uas project managementProject charter   tugas uas project management
Project charter tugas uas project management
 

Recently uploaded

MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfAndiCoc
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptnabilafarahdiba95
 
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxOPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxDedeRosza
 
Materi Sosialisasi US 2024 Sekolah Dasar pptx
Materi Sosialisasi US 2024 Sekolah Dasar pptxMateri Sosialisasi US 2024 Sekolah Dasar pptx
Materi Sosialisasi US 2024 Sekolah Dasar pptxSaujiOji
 
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptxBAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptxJuliBriana2
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxsyahrulutama16
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxwawan479953
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAAndiCoc
 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfAkhyar33
 
Contoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxContoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxIvvatulAini
 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxDEAAYUANGGREANI
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxrizalhabib4
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxRIMA685626
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfJarzaniIsmail
 
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdfModul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdfKartiniIndasari
 
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANTUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANwawan479953
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...pipinafindraputri1
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxssuser35630b
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptnovibernadina
 
Pengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, FigmaPengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, FigmaAndreRangga1
 

Recently uploaded (20)

MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.pptHAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
HAK DAN KEWAJIBAN WARGA NEGARA ppkn i.ppt
 
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptxOPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
OPTIMALISASI KOMUNITAS BELAJAR DI SEKOLAH.pptx
 
Materi Sosialisasi US 2024 Sekolah Dasar pptx
Materi Sosialisasi US 2024 Sekolah Dasar pptxMateri Sosialisasi US 2024 Sekolah Dasar pptx
Materi Sosialisasi US 2024 Sekolah Dasar pptx
 
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptxBAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
BAB 5 KERJASAMA DALAM BERBAGAI BIDANG KEHIDUPAN.pptx
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
 
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdfKanvas BAGJA prakarsa perubahan Ahyar.pdf
Kanvas BAGJA prakarsa perubahan Ahyar.pdf
 
Contoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptxContoh PPT Seminar Proposal Teknik Informatika.pptx
Contoh PPT Seminar Proposal Teknik Informatika.pptx
 
PPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptxPPT Mean Median Modus data tunggal .pptx
PPT Mean Median Modus data tunggal .pptx
 
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptxBab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
Bab 4 Persatuan dan Kesatuan di Lingkup Wilayah Kabupaten dan Kota.pptx
 
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptxModul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
Modul Projek Bangunlah Jiwa dan Raganya - Damai Belajar Bersama - Fase C.pptx
 
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdfAksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
Aksi Nyata Sosialisasi Profil Pelajar Pancasila.pdf
 
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdfModul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
Modul Ajar Bahasa Inggris - HOME SWEET HOME (Chapter 3) - Fase D.pdf
 
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHANTUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
TUGAS RUANG KOLABORASI 1.3 PRAKARSA PERUBAHAN
 
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
Modul 2 - Bagaimana membangun lingkungan belajar yang mendukung transisi PAUD...
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
Kenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).pptKenakalan Remaja (Penggunaan Narkoba).ppt
Kenakalan Remaja (Penggunaan Narkoba).ppt
 
Pengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, FigmaPengenalan Figma, Figma Indtroduction, Figma
Pengenalan Figma, Figma Indtroduction, Figma
 

Java persistence api

  • 1. Java Persistence API – Doni Andriansyah (14000656) 1 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 2. Java Persistence API – Doni Andriansyah (14000656) 2 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 www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 3. Java Persistence API – Doni Andriansyah (14000656) 3 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 www.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 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.. 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 Table www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 6. Java Persistence API – Doni Andriansyah (14000656) 6 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). www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 7. Java Persistence API – Doni Andriansyah (14000656) 7 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. 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) 9 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 10. Java Persistence API – Doni Andriansyah (14000656) 10 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 11. Java Persistence API – Doni Andriansyah (14000656) 11 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 12. Java Persistence API – Doni Andriansyah (14000656) 12 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 13. Java Persistence API – Doni Andriansyah (14000656) 13 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 14. Java Persistence API – Doni Andriansyah (14000656) 14 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 15. Java Persistence API – Doni Andriansyah (14000656) 15 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. 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) 17 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. 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 CONTROLLER 1. 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) 21 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. www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 22. Java Persistence API – Doni Andriansyah (14000656) 22 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). www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 23. Java Persistence API – Doni Andriansyah (14000656) 23 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. 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 untuk menghasilkan sebuah Object Relational Mapping (ORM). www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 25. Java Persistence API – Doni Andriansyah (14000656) 25 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 www.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 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; } 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 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; www.freak-kutuonline.com copyleft @ 2012. All right reserved.
  • 28. Java Persistence API – Doni Andriansyah (14000656) 28 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; } 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 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 www.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 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; } 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 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 = "") 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 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; } 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 won't 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.xml www.freak-kutuonline.com copyleft @ 2012. All right reserved.