Dévoilement des proxys Hibernate : conversion des proxys en objets réels
Dans Hibernate, le chargement différé améliore les performances en chargeant les entités uniquement lorsque cela est nécessaire. Cependant, lors de l'envoi d'entités proxy (incomplètes) à des clients distants (par exemple GWT), leur conversion en objets réels devient nécessaire.
Défi : Comment transformer les proxys Hibernate en objets à part entière entités tout en conservant des capacités de chargement paresseux ?
Solution : Une méthode personnalisée fournit la réponse :
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; }
Cette méthode accomplit les tâches suivantes :
En tirant parti de cette méthode personnalisée, vous pouvez convertir certaines entités proxy en objets réels à la demande, tout en préservant les avantages du chargement différé pour la majorité de vos entités.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!