Rumah > Java > javaTutorial > Bagaimana untuk Menukar Proksi Hibernate kepada Objek Sebenar Sambil Mengekalkan Pemuatan Malas?

Bagaimana untuk Menukar Proksi Hibernate kepada Objek Sebenar Sambil Mengekalkan Pemuatan Malas?

DDD
Lepaskan: 2024-11-22 07:13:09
asal
196 orang telah melayarinya

How to Convert Hibernate Proxies to Real Objects While Preserving Lazy Loading?

Menyingkap Proksi Hibernate: Menukar Proksi kepada Objek Nyata

Dalam Hibernate, pemuatan malas meningkatkan prestasi dengan memuatkan entiti hanya apabila diperlukan. Walau bagaimanapun, apabila menghantar entiti proksi (tidak lengkap) kepada pelanggan jauh (cth., GWT), menukarnya kepada objek sebenar menjadi perlu.

Cabaran: Bagaimana kita boleh menukar proksi Hibernate menjadi sepenuhnya entiti sambil mengekalkan pemuatan malas keupayaan?

Penyelesaian: Kaedah tersuai memberikan jawapan:

public static <T> T initializeAndUnproxy(T entity) {
    // Prevent null entities from breaking the process
    if (entity == null) {
        throw new NullPointerException("Entity passed for initialization is null");
    }

    // Initialize the entity (lazy loading)
    Hibernate.initialize(entity);

    // If proxy, replace it with the actual implementation
    if (entity instanceof HibernateProxy) {
        entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()
                .getImplementation();
    }

    // Return the initialized and unproxied entity
    return entity;
}
Salin selepas log masuk

Kaedah ini mencapai perkara berikut:

  • Memulakan proksi (jika perlu) melalui Hibernate.initialize.
  • Jika entiti kekal sebagai proksi, kaedah menyahproksinya dengan mengekstrak pelaksanaan sebenar.
  • Mengembalikan entiti yang dimulakan dan tidak diproksi sepenuhnya.

Dengan memanfaatkan kaedah tersuai ini, anda boleh menukar entiti proksi terpilih kepada objek sebenar atas permintaan, sambil mengekalkan faedah pemuatan malas untuk majoriti entiti anda.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Proksi Hibernate kepada Objek Sebenar Sambil Mengekalkan Pemuatan Malas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan