Pessoal estou em uma dúvida em relação a conexão com o banco de dados, qual é a melhor forma e a mais correta,
eu to fazendo uma aplicaçãozinha e criei uma classe de conexão e no main eu crio o objeto conexão e passo essa conexão para as outras classes usarem ela e os metodos também, resumindo ela sempre vai ta ativa,
e eu vi q o pessoal faz q quando o metodo for usa a conexão com o banco de dados ele cria a conexão e depois de usar ele fecha (assim não seria mais lento) ??
e nessa maneira eu teria também em algumas ocaciões mais de uma conexão ativa
qual dessas 2 maneiras é melhor e mais correta?
Bom dia.
Depende das circunstâncias.
Se você for utilizar a mesma conexão por várias classes, é recomendável que você use os designs patterns [b]AbstractFactory[/b] e [b]Singleton[/b] (Uma classe responsável por "fabricar" a conexão, e só vai existir uma instância do objeto Connection para todas as classes que precisem dela).
Ex:
[code]
[...]
private Connection conexao = null;
public [b]static[/b] Connection getConnection() {
if ( conexao == null ) { // ainda não foi criada uma instância de Connection
conexao = new Connection(...);
}
return conexao;
}
public static void fechaConexao() {
conexao.close();
conexao = null;
}
[...]
[/code]
No trecho acima, se uma conexão ainda não tiver sido criada, então ele cria e retorna ela… Mas caso já existir alguma conexão, então ele simplesmente retorna a conexão existente, sem criar uma outra… Com estes patterns você vai economizar recursos do sistema, como o numero de conexões abertas simultâneamente… etc… etc… Quando precisar fechar a conexão, basta chamar o método “fechaConexao();”.
Esta é a forma recomendada pela arquitetura… mas, como disse anteriormente, se for uma conexão que não será solicitada de forma permanente, talvez não seja necessário manter uma conexão aberta… Mas, se for uma aplicação de produção, você realmente deve usar a primeira solução.
(Obs: Usando EJB você fica livre deste tipo de preocupação, procure informações sobre EJBs e o pattern DAO).
Grande abraço,
Até.