Em um dado momento eu havia lido rapidamente o seguinte artigo que tratava de 7 hábitos eficazes dos desenvolvedores Hibernate e JPA Show archive.org snapshot quando buscava informações sobre o Lazy, mas não havia me atentado ao uso do quinto hábito, o uso do Stateless Session, que pode vir a ser de extrema utilidade.
Resumindo o seu uso, ele cria uma sessão onde todas as vantagens da interface de sessão do Hibernate, como a escrita em banco postergada, o primeiro nível de cache, detecção automática de mudanças em objetos, updates agendadas, entre outras, são perdidas. No lugar é dada preferência à execuções diretas no banco de dados assim que uma chamada de código é feita, estando então o código muito mais próximo do banco, mesmo ainda estando trabalhando com objetos. Este comportamento diferenciado pode ser extremamente desejado na hora de tratar o processamento em lote de dados que entram e saem do banco, deixando a carga extra de processamento e análise de objetos pelo hibernate "desligada" nesta sessão, economizando muita memória, uma vez que este processamento adicional neste caso seria indesejado.
Para o uso do Stateless Session algumas chamadas encaminhadas pelo hibernate passam a ser utilizadas de forma diferente, como trocando-se o save pelo insert por exemplo. Mais informações podem ser obtidas na internet, mas alguns dos sites que consegui recuperar do meu histórico dentre os que li brevemente para utilizar o que eu precisei foram:
- Learning the code way - Stateless Session Show archive.org snapshot
- Code Reverse - Hibernate - melhorando a performance com Stateless Session Show archive.org snapshot
- HIBERNATE - Community Documentation - Capítulo 13. Processamento de lotes Show archive.org snapshot
- HIBERNATE - Community Documentation - Capítulo 19. Aumentando a performance Show archive.org snapshot