Evite que o Dozer ative o carregamento lento do Hibernate
Estou usando transações Spring para que a transação ainda esteja ativa quando ocorrer a conversão de POJO para DT
Gostaria de impedir que o Dozer acione o carregamento lento, para que consultas SQL ocultas nunca ocorram: todas as buscas devem ser feitas explicitamente via HQL (para obter o melhor controle sobre o desempenho
É uma boa prática (não consigo encontrá-la documentada em nenhum lugar)?
Como fazer isso com segurança?
Tentei isso antes da conversão do DTO:
PlatformTransactionManager tm = (PlatformTransactionManager) SingletonFactoryProvider.getSingletonFactory().getSingleton("transactionManager");
tm.commit(tm.getTransaction(new DefaultTransactionDefinition()));
Não sei o que acontece com a transação, mas a sessão do Hibernate não é fechada e o carregamento lento ainda ocorr
Tentei o seguinte:
SessionFactory sf = (SessionFactory) SingletonFactoryProvider.getSingletonFactory().getSingleton("sessionFactory");
sf.getCurrentSession().clear();
sf.getCurrentSession().close();
E evita o carregamento lento, mas é uma boa prática manipular a sessão diretamente na camada do aplicativo (que é chamada de "fachada" no meu projeto)? Quais efeitos colaterais negativos devo temer? (Eu já vi que testes envolvendo conversões POJO -> DTO não podiam mais ser iniciados por meio das classes de teste AbstractTransactionnalDatasource Spring, porque essas classes tentam acionar uma reversão em uma transação que não está mais vinculada a uma sessão ativa).
Também tentei definir a propagação para NOT_SUPPORTED ou REQUIRES_NEW, mas reutiliza a sessão atual do Hibernate e não impede o carregamento lento.