Prevenir que Dozer active la carga diferida de Hibernate

Estoy utilizando transacciones Spring, por lo que la transacción aún está activa cuando se produce la conversión de POJO a DTO.

Me gustaría evitar que Dozer desencadene una carga diferida, de modo que las consultas sql ocultas nunca ocurran: todas las recuperaciones deben hacerse explícitamente a través de HQL (para obtener el mejor control sobre el rendimiento).

¿Es una buena práctica (no puedo encontrarlo documentado en ningún lado)?

¿Cómo hacerlo de forma segura?

Intenté esto antes de la conversión DTO:

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

No sé qué sucede con la transacción, pero la sesión de Hibernate no se cierra y aún se produce la carga diferida.

Intenté esto:

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

Y evita la carga diferida, pero ¿es una buena práctica manipular la sesión directamente en la capa de aplicación (que se llama "fachada" en mi proyecto)? ¿Qué efectos secundarios negativos debo temer? (Ya he visto que las pruebas que involucran conversiones POJO -> DTO ya no podrían iniciarse a través de las clases de prueba AbstractTransactionnalDatasource Spring, porque estas clases intentan desencadenar una reversión en una transacción que ya no está vinculada a una sesión activa).

También intenté establecer la propagación en NOT_SUPPORTED o REQUIRES_NEW, pero reutiliza la sesión actual de Hibernate y no evita la carga diferida.

Respuestas a la pregunta(6)

Su respuesta a la pregunta