Java + Firebird

Boa tarde, pessoal!

Estou com um abacaxi e não sei como descascar…

Estou desenvolvendo um sistema utilizando o BD Firebird, versão 2.0.

Estava utilizando Statements para efetuar os SQL’s. Estava utilizando uma única conexão e não estava fechando nenhum Statement nem nenhum ResultSet.

Durante os testes, a performance do programa estava ótima, mas o consumo de memória do Firebird (serviço fbserver.exe) estava aumentando muito, até que em um momento, estourou a memória disponível!

Pesquisei bastante sobre o assunto e, depois de ler um pouco mais sobre o JDBC, todos recomendavam utilizar PreparedStatement, devido a segurança e performance. Alterei todos os DAO para utilizar PreparedStatement e passei a fechar todos os PreparedStatement e todos os ResultSet. Apesar de o consumo de memória do Firebird ainda estar alto, caiu bastante em comparação com minha primeira implementação. No entanto, a performance do programa despencou!!!

Alguém teria alguma sugestão de como contornar esses problemas, mantendo o consumo de memória do Firebird baixo (qualquer coisa abaixo de 10 MB está ótimo!), sem comprometer a performance da aplicação?

Desde já, muito obrigado.

Tenta usar o Hibernate + C3P0 (Pool de conexões).

Obrigado pela dica emmanuelrock, mas a empresa não permite a utilização do hibernate…

Então vai fechando as conexões.