Rumah >Java >javaTutorial >Mengapa JPA Saya @OneToOne Lazy Loading Tidak Berfungsi?
Mengatasi Kekecewaan Lazy Loading dalam JPA OneToOne Relations
Pertanyaan ini melibatkan aplikasi yang mengalami prestasi perlahan disebabkan bilangan gabungan yang berlebihan dalam Hibernate pertanyaan. Walaupun menganotasi @OneToOne dan @ManyToOne dengan FetchType.LAZY, pemuatan malas nampaknya tidak berkuat kuasa.
Akar Isu
Isunya terletak di bahagian dalam hierarki perhubungan OneToOne dan ManyToOne antara entiti. Walaupun hubungan ManyToMany dan OneToMany boleh menjadi malas dengan mudah, perkara yang sama tidak berlaku untuk jenis persatuan OneToOne tertentu.
Penyelesaian
A. Perhubungan OneToOne Nullable (Tanpa Kekangan)
Perkaitan satu sama satu tanpa kekangan, di mana sifat yang berkaitan boleh menjadi batal, tidak boleh diproksi tanpa instrumentasi bytecode. Ini kerana entiti pemilik perlu mengetahui sama ada persatuan itu mengandungi proksi atau batal, yang tidak boleh ditentukan semata-mata daripada lajur jadual asas.
B. Perhubungan OneToOne Tidak Boleh Dibatalkan
Untuk persatuan satu sama satu yang tidak boleh dibatalkan, pilihan berikut tersedia:
Peta perkaitan sebagai perhubungan bercantum, menambah lajur kunci asing pada jadual pemilik:
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="other_entity_fk") public OtherEntity getOther()
C . Perhubungan ManyToOne
Perhubungan ManyToOne boleh dibuat malas tanpa sekatan: @ManyToOne(fetch=FetchType.LAZY). Walau bagaimanapun, pastikan anotasi ini tidak ditimpa dalam pertanyaan itu sendiri.
Pertimbangan
Jika pemuatan berterusan persatuan OneToOne menyebabkan isu prestasi yang ketara, kecacatan reka bentuk yang lebih luas dalam model data perlu disiasat. Instrumentasi bytecode mungkin diperlukan sebagai pilihan terakhir.
Nota Pelaksanaan
Atas ialah kandungan terperinci Mengapa JPA Saya @OneToOne Lazy Loading Tidak Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!