Bom dia galera, tudo certo?
Galera tenho uma dúvida sobre conexão com o banco de dados, ela surgiu conversando com um amigo, segundo ele é melhor deixar uma conexão aberta na classe principal e passar ela para os formulários, eu já acho que o mais ideal é cada lugar que for usar abrir uma conexão. Enfim, qual é o mais comum que o pessoal usa para aplicações desktop (não é web!!).
Caso alguém de alguma sugestão seria de muito bom grado algum tutorial.
Obrigado.
1 curtida
Eu trabalho com uma conexão na classe principal, onde todos os formulários da aplicação resgatam essa conexão, acessam e utilizam, isso evita que a aplicação tenha várias conexões simultaneamente abertas ao mesmo tempo para um único utilizador.
Mas este é um conceito meu, cada um trabalha da maneira em que acha mais apropriado de acordo com cada cenário.
1 curtida
Obrigado Jonathan, você teria um exemplo de como resgata essa conexão? Obrigado.
Exemplo bem simples que já utilizei bastante!
Faço a instancia da conexão na principal:
ConexaoOracle connection = new ConexaoOracle();
e passo nos construtores dos forms a instância de conexão por parâmetro.
public cadCliente(ConexaoOracle conn){
}
chamando o form cadCliente com parâmetro de conexão com o BD.
new cadCliente(connection);
1 curtida
Cara, até onde sei, conexões com o banco de dados devem ser stateless.
Abra, faça o que tem que fazer e feche-a.
Não deixe conexões abertas.
É por isso que existem pools de conexões. Você usa e devolve para o pool. Senão não existiria o pool.
2 curtidas
Olá como igorventurelli disse, abra a conexão faça o que precisa e depois feche, do jeitinho que a sua mãe te ensinou com as coisa na infância. Você pode usar o padrão singleton para resgatar a mesma instância do banco. Abaixo um exemplo mais claro caso tenha fica alguma duvida
private static SuaClasseDeConexaoComDB Instancia = null;
public static SuaClasseDeConexaoComDB getInstancia() {
if (Instancia == null) {
Instancia = new SuaClasseDeConexaoComDB ();
}
return Instancia;
}
//construtor privado para que nao possa ser instaciada de fora da classe
private SuaClasseDeConexaoComDB () {
//faça coisas
}
Espero ter ajudado ![:slight_smile: :slight_smile:](//www.guj.com.br/images/emoji/twitter/slight_smile.png?v=5)
2 curtidas
Entendido galera, muito obrigado, o melhor mesmo então pé abrir a conexão executar a query e fechar.
Dando uma pesquisada vi o tal do connection pool (C3p0 no caso), isso é eficiente para aplicação desktop? Porque testei ele e notei que pra cada pc que abre o programa ele cria 3 conexões com o database.
Obrigado novamente!
Abraço!