DAO Pada Join Tabel

dao join tabel

Hal yang sering ditanyakan bagi yang baru belajar akses basisdata menggunakan pola DAO termasuk saya dulu adalah bagaimana cara membuat DAO untuk join tabel. Selanjutnya mungkin akan bertanya

Jika saya memiliki 2 kelas Buku dan Kategori, di DAO yang mana saya membuat method untuk join-nya

Semoga tulisan ini bisa memberikan sebuah penjelasan mengenai cara membuat join tabel pada sebuah DAO.
Pada tulisan ini saya menggunakan teknologi JDBC karena yang pertama dipelajari oleh pemula untuk mengakses basisdata adalah JDBC.

Tabel Data

Untuk contoh kasus akan kita gunakan relasi antara tabel [rad-hl]buku[/rad-hl] dengan [rad-hl]kategori[/rad-hl]. Berikut adalah script untuk membuatnya
tabel buku

tabel kategori

Gambar relasinya sebagai berikut
relation

Kelas Domain

Untuk tiap tabel diatas kita buatkan kelasnya pada Java. Nanti proses CRUD akan jauh lebih enak jika kita menggunakan kelas POJO ini.
Ingat, tabel diatas memiliki relasi yang dihubungkan dengan [rad-hl]primary key[/rad-hl] dan [rad-hl]foreign key[/rad-hl]. Pada kelas Java relasi ditunjukkan dengan variabel.

file : Buku.java

Dan berikut kelas Kategori yang merupakan mapping dari tabel kategori
file : Kategori.java

Pada kelas [rad-hl]Buku[/rad-hl] terdapat varibel [rad-hl]kategori[/rad-hl] sedangkan pada kelas [rad-hl]Kategori[/rad-hl] terdapat variabel [rad-hl]daftarBuku[/rad-hl]. Kedua variabel tersebut menunjukkan relasi antara kedua kelas.

Kelas DAO

Sekarang saatnya kita menulis kelas DAO.
Untuk menyederhanakan kasus dan menyesuaikan judul maka DAO hanya akan memiliki satu method, yaitu method untuk mengambil data JOIN antara tabel [rad-hl]buku[/rad-hl] dengan tabel [rad-hl]kategori[/rad-hl]. Hasil outputnya nanti bisa menampilkan data buku dengan kategori yang dimilikinya.

Di DAO mana kita akan menulisnya?
Apakah di DAO Buku atau DAO Kategori?

Sebaiknya di DAO Buku karena intinya kita akan mengambil data buku dari basisdata bukan data kategori.
Dan berikut adalah kelas [rad-hl]BukuDaoJdbc[/rad-hl]

file : BukuDaoJdbc.java

Perhatikan pada baris yang saya tandai, [rad-hl]buku.setKategori(kategori)[/rad-hl] merupakan cara untuk merelasikan antara objek buku dengan objek kategori. Tanpa itu relasi antara kedua kelas tidak akan bisa terjalin
Pertama tentu kita harus melakukan mapping data dari hasil ResultSet kedalam kelas [rad-hl]Buku[/rad-hl] dan juga kelas [rad-hl]Kategori[/rad-hl]. Set id-nya dan lain sebagainya, baru kemudian direlasikan seperti kode yang saya tandai

Kelas Main

Untuk mencoba hasilnya kita tulis di kelas Main saja, mau pakai Integration Test juga boleh
Sebelumnya saya sudah memasukkan beberapa data sampel

file : App.java

Hasil yang muncul dilayar adalah seperti berikut
result

Source Code

Seperti biasa saya selalu menyertakan file project sampel pada artikel yang saya tulis.
Silahkan dapat dilihat disini

Semoga tulisan ini bermanfaat 🙂

Facebook Comments
 

Agung Setiawan

Agung Setiawan adalah software engineer di BukaLapak.com, penulis sekaligus pecinta sastra, dan pembaca buku

 
Halo, perkenalkan saya Agung Setiawan.
Saya Software Engineer di BukaLapak.
Simak pemikian saya soal dunia Software Engineering via Twitter di @agungsetiawanmu dan facebook
Blog ini saya update seminggu sekali jadi sering-sering saja mampir
Mau belajar Vim bareng saya?
Belajar ngoding dari nol menggunakan PHP

One thought on “DAO Pada Join Tabel

  1. gan, ane mau tanya nih, kalo pas kategori itu dipanggil di web page, pake hashmap kira” gimana ya gan?
    terima kasih sebelumnya

Leave a Reply

Your email address will not be published. Required fields are marked *