Empêcher le bulldozer de déclencher le chargement différé d'Hibernate

Je suis en utilisant le Printemps des transactions de sorte que la transaction est toujours actif quand POJO à DTO conversion se produit.

Je voudrais empêcher les Bulldozers de déclencher le chargement paresseux, de sorte que caché des requêtes sql ne jamais se produire : tout l'extraction doit être fait explicitement via HQL (pour obtenir le meilleur contrôle sur les spectacles).

  1. Est-ce une bonne pratique (je ne le trouve pas documenté partout) ?
  2. Comment le faire en toute sécurité ?

J'ai essayé cela avant DTO conversion :

PlatformTransactionManager tm = (PlatformTransactionManager) SingletonFactoryProvider.getSingletonFactory().getSingleton("transactionManager");
tm.commit(tm.getTransaction(new DefaultTransactionDefinition()));

Je ne sais pas ce qui se passe à l'opération, mais la session Hibernate n'est pas fermé, et le chargement paresseux se produit encore.

J'ai essayé ceci :

SessionFactory sf = (SessionFactory) SingletonFactoryProvider.getSingletonFactory().getSingleton("sessionFactory");
sf.getCurrentSession().clear();
sf.getCurrentSession().close();

Et il empêche le chargement paresseux, mais est-ce une bonne pratique à manipuler session directement dans la couche d'application (qui est appelé la "façade" de mon projet) ? Qui effets secondaires négatifs aurais-je peur ? (J'ai déjà vu que les tests impliquant des POJO -> DTO conversions pourraient ne plus être lancé par AbstractTransactionnalDatasource Printemps classes de test, parce que cela les classes d'essayer de déclencher une restauration sur une transaction qui n'est pas plus liée à une session active).

J'ai aussi essayé de mettre de la propagation de NOT_SUPPORTED ou REQUIRES_NEW, mais il réutilisation de l'actuelle session Hibernate, et n'empêche pas le chargement paresseux.

source d'informationauteur Tristan