Penggunaan Cascade pada Hibernate

Hibernate

Hibernate menyediakan property cascade pada hubungan One-To-Many untuk memudahkan kita dalam melakukan operasi basisdata yang berupa data header-detail. Maksudnya header-detail bagaimana? ada satu data sebagai header dan ada beberapa data yang merupakan detail dari data header tersebut. Paling gampang untuk memahaminya menggunakan contoh. Silahkan disimak contoh berikut.

Kita memiliki 2 buah tabel, satu sebagai tabel header yaitu tabel penjualan dan satu lagi tabel penjualan_detail sebagai tabel detail

Gambar relasi kedua tabel diatas seperti pada gambar dibawah ini

relation

Jadi 1 header penjualan memiliki banyak detail penjualan rinci.

Kelas Domain

Seperti biasa kalau menggunakan ORM, kita buat kelas domainnya untuk mapping tabel pada basisdata

file : Penjualan.java

file : PenjualanDetail.java

Kelas Utama

Tanpa Cascade
Tanpa menggunakan cascade maka kita harus melakukan save baik pada Penjualan maupun pada PenjualanDetail. Jika ada 10 PenjualanDetail, kita lakukan 10 kali save pada PenjualanDetail.
Perhatikan pada bagian yang saya highlight

file : App.java

Dan SQL yang dihasilkan adalah sebagai berikut

Menggunakan Cascade
Jika menggunakan cascade maka kita hanya perlu melakukan save pada kelas yang merupakan header, dalam kasus ini adalah kelas Penjualan. Kita ubah kode pada kelas utama menjadi seperti ini.

file : App.java

Dan ketika dijalankanpun akan menghasilkan SQL yang sama

Mengaktifkan Cascade

Untuk mengaktifkan cascade cukup kita tambahkan property cascade pada annotaion OneToMany di header, yaitu kelas Penjualan.

tanpa cascade

dengan cascade

Referensi

[1] Guruzu, Srinivas and Gary Mak, Hibernate Recipes A Problem-Solution Approach, Apress, New York City, 2010

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

Leave a Reply

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