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; }
Kaedah ini mencapai perkara berikut:
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!