Se essa variável fica inacessível ela vai para o GC. E a conexão permance aberta até que alguém a feche.
renato_ramos
Quando GC pega ela… mesmo assim a conexão fica aberta?
L
leopoldof
O correto seria… vc fazer uma ação ao fechar o JFrame… nesta ação constaria o código para fechar a conexão antes que ela fosse destruída …
connection.close();
J113
Uma das “supostas melhorias” de Java é: o programador não se preocupar com desalocação de memória, um bom exemplo ponteiros… E nós programadores Java não devemos em teoria, economizar memória desalocando, pois o Garbage Collector se encarrega desse serviço, e não pense você que chamando métodos como, dispose e destroy, você tá controlando tal tarefa… Isso não acontece, apenas sinaliza ao Garbage Collector que esse objeto pode ser destruído, ou seja, você apenas candidata esse objeto para destruição a escolha final é interna!
Abraço.
J113
Sempre que em sua lógica de negócios, ficar claro a não necessidade da conexão aberta você deve chamar o método close. Mas não quer dizer que ela fica aberta infinitamente. O close fecha e libera os recursos imediatamente, mas a conexão tem um tempo de vida, se ficar inativa muito tempo ela “morre” sozinha.
Sou desenvolvedor web, na minha lógica de negócios é uma resposta por requisição, então fica claro que não devo manter conexão aberta, posso usar um filtro que abre, meu servlet processa responde, e o filtro mata a conexão!
abraço.
renato_ramos
muito obrigado pelas explicações =D
tipo vira boa pratica usar .close()? logo apos q a conexão não tiver mais sentido em ficar aberta?
Giulliano
Teoricamente a sua conexão deve ser aberta - usada - fechada. Não ficar mantendo a conexão aberta mesmo que vc a use daqui alguns minutos, abra uma nova.
A única razão de manter uma conexão aberta após seu uso é quando vc esta trabalhando com uma transação.
thundercas
renato_ramos,
Trabalhe sempre com blocos
try{}catch{}finally{}
em sua camada DAO. Daí, dentro do bloco finally{}, você declara o fechamento da conexão.
renato_ramos
thundercas:
renato_ramos,
Trabalhe sempre com blocos
try{}catch{}finally{}
em sua camada DAO. Daí, dentro do bloco finally{}, você declara o fechamento da conexão.
opa… mt obrigado dnovo=D
o grande problema agora é que aplicação tah meio grande pra refazer om blocos xD… mas assim um hora q eu nun tiver mais nd pra fazer eu refaço…