Opa pessoal,
Acabei de blogar sobre como podemos evitar vazamento de conexões e garantir um controle das transações de forma robusta da aplicação. No artigo não existe a figura do Spring nem EJB nem CDI; implementamos o que esses frameworks fazem por debaixo dos panos usando apenas padrões de projetos, polimorfismo e encapsulamento, ou seja OO:
Acredito que muitos aqui já vacilaram como eu vacilei: esqueci de fechar uma conexão e bumm! derrubei um sistema em produção! Depois dessa experiência traumática eu nunca mais esqueci como se deve lidar com recursos caros do banco de dados, sempre garanto que a transação foi comitada e a conexão devidamente fechada!
Um abraço,