Mengkonfigurasi Lazy Fetching untuk JPA OneToOne Relations secara Deklaratif
Satu pengoptimuman biasa dalam aplikasi JPA ialah mendayakan lazy fetching untuk perhubungan. Secara lalai, JPA mengambil persatuan OneToOne dengan penuh semangat, yang boleh membawa kepada isu prestasi dalam situasi di mana entiti yang berkaitan tidak selalu diperlukan. Artikel ini meneroka kaedah untuk mengkonfigurasi perhubungan OneToOne sebagai malas, menangani isu khusus yang dihadapi oleh pengguna di mana pengambilan yang tidak sabar-sabar menyebabkan kesesakan prestasi.
Pertama sekali, adalah penting untuk menjelaskan bahawa perkaitan satu dengan satu yang tidak dikekang (tidak boleh dibatalkan) tidak boleh diproksi tanpa instrumentasi bytecode. Ini kerana entiti pemilik mesti menentukan sama ada harta persatuan harus mengandungi proksi atau batal, yang tidak boleh ditentukan semata-mata berdasarkan lajur jadual asas.
Untuk persatuan banyak dengan satu (dan satu dengan- banyak persatuan), pengambilan malas boleh dilaksanakan. Entiti pemilik boleh menyemak kunci asingnya dengan mudah (atau mencipta proksi koleksi kosong untuk persatuan satu-ke-banyak) untuk mengisi perkaitan atas permintaan.
Untuk mendayakan pengambilan malas untuk persatuan @ManyToOne, @ManyToOne anotasi boleh dianotasi dengan fetch=FetchType.LAZY. Walau bagaimanapun, adalah penting untuk mengesahkan bahawa pertanyaan itu sendiri tidak menimpa tetapan ini.
Untuk perkaitan @OneToOne, jika ia tidak boleh dibatalkan, ia boleh ditentukan seperti itu:
@OneToOne(optional = false, fetch = FetchType.LAZY)
Jika perkaitan itu boleh dibatalkan dan tidak boleh ditukar, instrumentasi kod byte ialah satu-satunya pilihan.
Satu lagi senario timbul apabila perkaitan @OneToOne menyebabkan isu prestasi disebabkan oleh bilangan gabungan yang besar dalam pertanyaan yang terhasil. Dalam kes sedemikian, adalah disyorkan untuk memeriksa model dan mempertimbangkan untuk melaksanakan pendekatan alternatif, seperti menggunakan perhubungan satu-dengan-banyak dengan kekangan unik pada bahagian banyak-dengan-satu.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mengkonfigurasi Lazy Fetching untuk Hubungan JPA OneToOne?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!