Thx mas Endy atas penjelasannya yang detil (jadi pengen ditraining lagi
hehe)

Kalau misalnya relasinya seperti ini:

JenisProduk    1..*   Produk  1..*  Rekening

kemudian querynya adalah:
select p from Produk p join fetch JenisProduk jp left outer join fetch
p.rekening rekening where produk.id = '1' and rekening.status = 'aktif'

jika jumlah rekening yang 'aktif' untuk produk dengan id '1' adalah 3
berarti hasilnya kan 1x1x3 row.
Bukannya hibernate seharusnya secara "pintar" membuat satu objek produk
mengisi property2nya kemudian mengisi collection rekening dengan 3 objek
rekening 'aktif' untuk produk.id = '1' kemudian mengembalikan 1 objek produk
saja?



>
> BIla dibatasi dengan ID, seperti ini:
> select p from Product p
> join fetch p.supplier
> join fetch p.category
> where p.id=1
>
> Maka resultsetnya akan menjadi 1x5x3
>
> Itu sebabnya Bustanil dapat NURE.
> Solusinya, seperti kata Muklis, pakai distinct.
> Tapi ini juga ada konsekuensinya, karena tetap saja 1x5x3 record akan
> dikirim dari db server ke app server.
> Nanti di appserver baru Hibernate akan membuang 14 record yang
> ternyata duplikat.
>
> Pesan moral dari cerita ini:
> Kalau mendesain aplikasi, kata kuncinya adalah trade-off.
> Tidak ada 100% perfect, pasti ada aspek yang harus dikorbankan agar
> aspek lain bisa maksimal.
> Jadi, kalau mau jadi architect yang baik, harus:
> 1. Tau opsi yang tersedia
> 2. Tau konsekuensi dari masing-masing opsi
> 3. Bisa mengkompromikan konsekuensi tersebut dengan goal yang ingin
> dicapai.
>
> Good luck ... :D
>
> --
> Endy Muhardin
> http://endy.artivisi.com
> Y! : endymuhardin
> -- life learn contribute --
>  
>



-- 
Bustanil Arifin
RnD - PT.Collega Inti Pratama

Kirim email ke