Estou desenvolvendo um sistema para uma média de 50 a 200 usuários, desenvolvi duas classes de conexão para testar:
1º) Classe utilizando o design pattern singleton, onde a classe de conexão seria instancia apenas uma vez e todos os usuários utilizariam a mesma conexão, para evitar que a cada requisição seja aberta uma nova conexão com o banco de dados.
2º) Classe convencional, onde a cada transação a é aberta uma conexão e após o fim a transação o método close() é chamado através do finally do bloco try/catch/finally, dessa forma a cada requisição com banco é aberta uma conexão e fechada logo em seguida.
Gostaria de informações sobre qual dessas seria melhor de usar…
Sem dúvida, como o colega LuizClaudio falou, é muito melhor usar um pool de conexões.
Aí você tem duas opções: usar o pool de conexões fornecido pelo fabricante do driver de conexão, ou utilizar um pool genérico como o C3P0, o que é muito melhor porque o pool é o mesmo independentemente do driver.
Valeu pessoal, também pensei em usar hibernate mas o esse projeto onde vou participar deve ser em JBBC mesmo, será que alguém já utilizou a conexão baseada em uma unica instancia para o sistema inteiro, essa conexão seria a 1º Opção de que falei logo acima, onde ela é baseada no pattern singleton?
Cara, na minha opinião ( e de muitos outros aqui ) aplicar singleton em conexão com banco de dados não é interessante. Use o pool, já está tudo pronto e é simples de usar. Além de tudo, é muito mais escalável, pois se um dia você perceber que precisa de mais conexões, basta ajustar os parâmetros do pool e pronto.
Valeu tarso, vou ver a possibilidade de implementar um pool de conexões, só ainda estou na dúvida pois o JDBC tradicional é especificação do sistema, vou ver direito antes de fazer a parte de banco, então pelo que vi no forum implantar o singleton na classe de conexão não seria uma boa no meu caso.