O que acotnece com a Connection?

9 respostas
renato_ramos

Uma duvida me surgiu…

eu tenho um JFrame que chama outr JFrame… no JFrame chamado eu tenho um Connection aberto… quando eu chamo o metodo

.dispose() do Jframe chamado… pra onde vai a conexão aberta? ela continua em memoria?

acho que a resposta pra essa pergunta é meio obvia… mas… eu não sei =/

valeu ^^’

9 Respostas

Giulliano

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

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…

conhecimento nunca é dmais .o/

vou comecar a usar isso =D

Criado 4 de dezembro de 2009
Ultima resposta 4 de dez. de 2009
Respostas 9
Participantes 5