Maison > Java > javaDidacticiel > Comment convertir des proxys Hibernate en objets réels tout en préservant le chargement paresseux ?

Comment convertir des proxys Hibernate en objets réels tout en préservant le chargement paresseux ?

DDD
Libérer: 2024-11-22 07:13:09
original
197 Les gens l'ont consulté

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

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;
}
Copier après la connexion

Cette méthode accomplit les tâches suivantes :

  • Initialise le proxy (si nécessaire) via Hibernate.initialize.
  • Si l'entité reste un proxy , la méthode le supprime en extrayant l'implémentation réelle.
  • Renvoie le fichier entièrement initialisé et sans proxy entité.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal