Katakanlah ada entitas Siswa yang memiliki hubungan satu ke banyak dengan entitas Subjek yang dimuat dengan lambat. Anotasi @OneToMany digunakan untuk menentukan hubungan. Saya ingin memahami cara kerja internal hibernasi tentang cara penanganan anotasi ini.
Bagaimana cara kerja anotasi hubungan hibernasi (@OneToOne, @OneToMany, dll).
comment
Ini disebut open source karena suatu alasan yang Anda tahu :)
- person fvu   schedule 09.12.2013
comment
Ini open source, tetapi saya perlu tahu kelas mana yang harus dicari. Apakah ada pemroses anotasi yang menangani ini? Katakanlah objek siswa terisi tetapi mata pelajarannya bukan karena pemuatan yang lambat; ketika saya menelepon student.getSubjects() apa yang sebenarnya terjadi. Itu yang ingin saya ketahui
- person java_geek   schedule 09.12.2013
comment
Anotasi hanyalah penanda, keajaiban sebenarnya dilakukan dengan menenun alias manipulasi bytecode - setelah memuat kelas secara efektif ditulis ulang untuk menciptakan hal-hal seperti hubungan dan pemuatan lambat.
- person fvu   schedule 09.12.2013
comment
@fvu : Saya ingin mengetahui beberapa detail dari proses itu. Itu sebabnya saya mengajukan pertanyaan itu. Apakah ada tautan yang dapat membantu saya?
- person java_geek   schedule 09.12.2013
Jawaban (1)
Saat membuat instance Student dari data yang dibaca di database, Hibernate menginisialisasi koleksi subjects
dengan instance implementasi Collection-nya sendiri (yang disebut PersistentCollection).
PersistentCollection ini tidak diinisialisasi pada awalnya, dan tidak berisi data apa pun. Pertama kali metode mana pun dari koleksi ini dipanggil, kueri SQL dijalankan untuk memuat semua mata pelajaran siswa, dan mata pelajaran tersebut kemudian disimpan dalam cache di dalam koleksi untuk semua pemanggilan metode berikutnya.
person
JB Nizet
schedule
09.12.2013
Saya punya pertanyaan lain. Bisakah Anda memberi tahu saya bagaimana hibernate mengetahui saat runtime bahwa koleksi perlu dimuat dengan lambat? Apakah itu memanipulasi bytecode pada waktu kompilasi atau apakah anotasi tersedia saat runtime?
- person java_geek; 09.12.2013
Ya, anotasi tersedia saat runtime. Ketika pabrik sesi dibuat, Hibernate menganalisis semua kelas entitas.
- person JB Nizet; 09.12.2013
Terima kasih atas tanggapannya
- person java_geek; 10.12.2013