O que acotnece com a Connection?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
renato_ramos
JavaGuru
[Avatar]

Membro desde: 07/10/2009 12:04:32
Mensagens: 234
Offline

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 ^^'

[]'s Renato Ramos
[Email] [MSN]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

Se essa variável fica inacessível ela vai para o GC. E a conexão permance aberta até que alguém a feche.

This message was edited 1 time. Last update was at 04/12/2009 13:53:54


Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
renato_ramos
JavaGuru
[Avatar]

Membro desde: 07/10/2009 12:04:32
Mensagens: 234
Offline

Quando GC pega ela.. mesmo assim a conexão fica aberta?

[]'s Renato Ramos
[Email] [MSN]
leopoldof
GUJ Master

Membro desde: 07/03/2008 07:40:45
Mensagens: 1012
Offline

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();
J@rge Luis
Thread.start()
[Avatar]

Membro desde: 09/10/2009 13:15:37
Mensagens: 42
Offline


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.

Jorge Luis de Souza.

Site:http://www.jorgeluis.eti.br
Blog:http://blog.jorgeluis.eti.br
E-mail:contato@jorgeluis.eti.br
[Email] [WWW] [MSN]
J@rge Luis
Thread.start()
[Avatar]

Membro desde: 09/10/2009 13:15:37
Mensagens: 42
Offline


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.

Jorge Luis de Souza.

Site:http://www.jorgeluis.eti.br
Blog:http://blog.jorgeluis.eti.br
E-mail:contato@jorgeluis.eti.br
[Email] [WWW] [MSN]
renato_ramos
JavaGuru
[Avatar]

Membro desde: 07/10/2009 12:04:32
Mensagens: 234
Offline

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?

[]'s Renato Ramos
[Email] [MSN]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

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.

Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
thundercas
JavaEvangelist
[Avatar]

Membro desde: 15/09/2007 11:04:51
Mensagens: 429
Localização: São Paulo - SP
Offline

renato_ramos,

Trabalhe sempre com blocos



em sua camada DAO. Daí, dentro do bloco finally{}, você declara o fechamento da conexão.

Cassiano Colombo de Oliveira Gil
Analista Programador Junior
São Paulo - SP
E-mail: cassi_ano@hotmail.com
Twiter: http://twitter.com/thundercas
[Email] [MSN]
renato_ramos
JavaGuru
[Avatar]

Membro desde: 07/10/2009 12:04:32
Mensagens: 234
Offline

thundercas wrote:renato_ramos,

Trabalhe sempre com blocos



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

[]'s Renato Ramos
[Email] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team