Problemas com conexao

11 respostas
M

estou tendo problemas ao fazer uma consulta

estou utilizando designer patter no meu sitema entao quando eu vou fazer uma consulta como por exemplo mercadorias, eu preciso faser a interface chamar a classe de negocio e depois chamar a classe de percistencia
bom ate ai tudo bem, eu abro a conexao faço a consulta que eu quero retorno isso para a interface, blz tudo que eu precisava o problema é que eu tenho que fechar esta conexao mais eu nao estou conseguindo pq o ResultSet so retorna o seu valor se a conexao estiver aberta, com isto eu estou ficando com varias conexoes abertas ao mesmo tempo, porque isso acontesse pq o sitema gerencia um bar entao o formulario e aberto toda hora . o sistema funciona um certo tempo depois ele trava devida ha estar com varias conexoes abertas, entao eu preciso retornar o valor do resultSet da percistencia para a classe de controle para retornar para a interface mais eu so posso fechar a conexao na interface.

11 Respostas

Marck

Olá!
Cara, ficou um pouco confuso mas, posta a sua classe de conexão!

Mas a ideia é bem simples: depois que voce preencher os dados com o do ResultSet(), vc chama o metodo close().

Linkel

Fera, poste seu código aí pra gente ver… E explique por partes o problema, para ficar mais fácil de entender…

M
bom eu tenho um jframePrincipal que possui um jtextField que é usado para chamar um jInternalFrame bom no metodo KeyPressed do jTextField eu fiz o seguinte codigo ...
try{
                            clienteBO = new ClienteBO();
                            funcionarioBO = new FuncionarioBO();
                            mercadoriasBO = new MercadoriasBO();
             // neste ponto eu chamo o metodo que me retorna uma lista de clientes.              
                            resultset = clienteBO.listarCliente();

...

agora vamos para o codigo do clienteBO.listarCliente();
public ResultSet listarCliente() {
      try{
          clienteDAO = new ClienteDAO();
          clienteDAO.AbrirConexao();
          res = clienteDAO.listarCliente();
          /*clienteDAO.FecharConexao();
 a conexao nao pode ser fechada aqui pq se nao o resultset ficara vazio 
           */
      }catch(Exception e){
          
      }
      return res;
   }
este metodo esta apenas chamando o metodo listarCliente da class clienteDAO agora a o codigo do metodo listarCliente da class ClienteDAO [code] public ResultSet listarCliente() { //Connection conect1 try{ //conexao = new Conexao(); //conect1 = conexao.getConexao(); st = conect.createStatement(); res = st.executeQuery("SELECT * FROM clientes "); //st.close(); //conect1.close(); }catch(Exception e){ } return res; } reparem uma coisa a conexao agora esta sendo criada no metoda da class ClienteBO mais antes estava sendo criada na class clienteDAO como vcs podem ver os comentarios o problema esta em retornar o resultset e fechar a conexao sendo que os valores do resultset so sao retornados com a conexao aberta

estava pensando em criar um array e retornar este array ao inves de retornar o resultset oque vcs acham.

acho que agora da para vcs terem um noção melhor do sistema.

P

Ola Mayke,

Você poderia usar o padrão de design Factory neste caso. Eu sou muito fã desse padrao em varias coisas. Voce poderia aplicar ele a sua classe de conexão, ai assim so teria uma conexão para cada instancia aberta do seu software.

Basicamente, o processo é simples. Você torna a conexão static e coloca um getter static na sua classe. Assim, sempre que quiser, ele vai retornar a mesma conexão.

Espero ter ajudado,

Grato!

Linkel

Sergio Figueras:
Ola Mayke,
Você poderia usar o padrão de design Factory neste caso. Eu sou muito fã desse padrao em varias coisas. Voce poderia aplicar ele a sua classe de conexão, ai assim so teria uma conexão para cada instancia aberta do seu software.
Basicamente, o processo é simples. Você torna a conexão static e coloca um getter static na sua classe. Assim, sempre que quiser, ele vai retornar a mesma conexão.
Espero ter ajudado,
Grato!

Brother, você não vai acreditar, mas quando lí esse post eu lembrei do que você falou lá naquele outro post sobre conexão, e é perfeitamente isso que vai resolver o problema do amigo aí… Eu ia indicar isso a ele, mas tinha certeza que você faria isso, rsrs, apesar de eu não saber exatamente como se faz…

P

Linkel:
Sergio Figueras:
Ola Mayke,
Você poderia usar o padrão de design Factory neste caso. Eu sou muito fã desse padrao em varias coisas. Voce poderia aplicar ele a sua classe de conexão, ai assim so teria uma conexão para cada instancia aberta do seu software.
Basicamente, o processo é simples. Você torna a conexão static e coloca um getter static na sua classe. Assim, sempre que quiser, ele vai retornar a mesma conexão.
Espero ter ajudado,
Grato!

Brother, você não vai acreditar, mas quando lí esse post eu lembrei do que você falou lá naquele outro post sobre conexão, e é perfeitamente isso que vai resolver o problema do amigo aí… Eu ia indicar isso a ele, mas tinha certeza que você faria isso, rsrs, apesar de eu não saber exatamente como se faz…

Ola Linkel,

rsrsrs. Bem, vamos deixar aquele post pra lá.

Bem, vou dizer o básico pra fazer sempre em uma classe de conexões. O método pra gerar a conexão deve ser static, assim só existirá um conexão, assim como o método para dar um get naconexão deverá ser static também. Assim, voce concorda que so vai existir uma conexão sempre, certo(int)

Mas eu discordo muito da abordagem de conectar e desconectaro tempo todo porque você acaba perdendo MUITO mais tempo de execução nisso do que só deixasse tudo aberto , saca(int)

E uma coisa interessante tambem que eu ia te sugerir, caso vc nao conheça, nao use, ou nao goste. Dá uma estudada boa no Hibernate. Cara, eu ja trabalhei tambem com sistemas complexos em SQL e sei a porcaria que é ficar debugando os SQL. O Hibernate e a coisa mais interessante que ja vi em Coding. Cara, voce nao precisa fazer uma SQL só na mao e o HQL dele é muito simples.

Se vc quiser eu posso te enviar tambem uns links de design patterns. Eu antes de estuda-los sempre achava q nao eram tao necessarios assim mas cara, eu estava completamente enganado. Eles são quem movem os bugs pra baixo. E convenhamos que n ha nada pior que uma aplicação cheia de bugs. rsrsrs.

Valeu!

Linkel

Sergio Figueras:
Bem, vamos deixar aquele post pra lá.

Bem, vou dizer o básico pra fazer sempre em uma classe de conexões. O método pra gerar a conexão deve ser static, assim só existirá um conexão, assim como o método para dar um get naconexão deverá ser static também. Assim, voce concorda que so vai existir uma conexão sempre, certo(int)

Mas eu discordo muito da abordagem de conectar e desconectaro tempo todo porque você acaba perdendo MUITO mais tempo de execução nisso do que só deixasse tudo aberto , saca(int)

E uma coisa interessante tambem que eu ia te sugerir, caso vc nao conheça, nao use, ou nao goste. Dá uma estudada boa no Hibernate. Cara, eu ja trabalhei tambem com sistemas complexos em SQL e sei a porcaria que é ficar debugando os SQL. O Hibernate e a coisa mais interessante que ja vi em Coding. Cara, voce nao precisa fazer uma SQL só na mao e o HQL dele é muito simples.

Se vc quiser eu posso te enviar tambem uns links de design patterns. Eu antes de estuda-los sempre achava q nao eram tao necessarios assim mas cara, eu estava completamente enganado. Eles são quem movem os bugs pra baixo. E convenhamos que n ha nada pior que uma aplicação cheia de bugs. rsrsrs.
Valeu!


Heheheh… Já nem lembro mais, rssrsrsrsrsrs…
Cara, indiretamente fui motivado a estudar mais o uso de métodos estáticos, e principalmente design patterns… Tirei o dia de hoje (sábado) só para estudar java, e agora há pouco, lí numa apostila da Caelum que os programadores mais inexperientes não conseguem entender a importância de se saber diferenciar o uso dos métodos, bem como trabalhar com design patterns e padronizações… E eu sabia que o autor estava falando de mim, rsrsrs… Numa conversa com o ViniGodoy ele me disse que precisou dominar design patterns também… Então não tive dúvidas que precisava seguir o que você falou… Interessante porque estou com um livro aqui, para desenvolvimento web, que trata do uso do Hibernate… Sofro muito com SQL, rsrsrsrs… Acho bom ter domínio, mas tenho que concordar que se perde muito em produção ficar codando SQL na unha…
Claro que eu vou querer os links! Acho que todo desenvolvedor que se preze odeia os bugs, rsrsrs…
Vou aguardar esses links, valeu!!!

P

rsrsrs…

La vao os links:

http://www.linhadecodigo.com.br/Artigo.aspx?id=345

O primeiro link apresenta uma otima introducao aos design patterns. E o segundo contem os design patterns e metodos deles, bem interessante.

Voce nao precisa decorar o nome deles, mas sempre tem que ter resolver os problemas de acordo com eles.

Se tiver com uma graninha (R$109,00) compra o livro Use a cabeça! Design patterns. É simples e cara, muito bom.

E uma dica, se vc quiser estudar java LEGAL mesmo, estuda pra certificação. Você pode ate nao querer tirar ela, mas cara, la tem MUITOS topicos interessantissimos e voce aprende MUITO estudando pra ela. Basicamente, vc realmente aprende Java. Eu to tirando a minha semana q vem. É foda, mas meu caro, vale muito a pena.

O melhor tutorial iniciante de Hibernate que ja vi:

http://www.visualbuilder.com/java/hibernate/tutorial/

Tem um amigo meu que diz que o que vale mais que tudo pra ele no Java é o Hibernate e aplicar design patterns. rsrsrs.

Eu nao sou muito de recomendar livros pq tem muita coisa na net, mas o Head First Design patterns! e o SCJP 5 da Kathy Sierra sao divinos.

Quando eu voltar ali pro Linux te passo minha lista de favoritos.

Abração!

Linkel

Sergio Figueras:
rsrsrs…

La vao os links:

http://www.linhadecodigo.com.br/Artigo.aspx?id=345

O primeiro link apresenta uma otima introducao aos design patterns. E o segundo contem os design patterns e metodos deles, bem interessante.

Voce nao precisa decorar o nome deles, mas sempre tem que ter resolver os problemas de acordo com eles.

Se tiver com uma graninha (R$109,00) compra o livro Use a cabeça! Design patterns. É simples e cara, muito bom.

E uma dica, se vc quiser estudar java LEGAL mesmo, estuda pra certificação. Você pode ate nao querer tirar ela, mas cara, la tem MUITOS topicos interessantissimos e voce aprende MUITO estudando pra ela. Basicamente, vc realmente aprende Java. Eu to tirando a minha semana q vem. É foda, mas meu caro, vale muito a pena.

O melhor tutorial iniciante de Hibernate que ja vi:

http://www.visualbuilder.com/java/hibernate/tutorial/

Tem um amigo meu que diz que o que vale mais que tudo pra ele no Java é o Hibernate e aplicar design patterns. rsrsrs.

Eu nao sou muito de recomendar livros pq tem muita coisa na net, mas o Head First Design patterns! e o SCJP 5 da Kathy Sierra sao divinos.

Quando eu voltar ali pro Linux te passo minha lista de favoritos.

Abração!


Opa, mano, valeu mesmooooooo!!!
Primeira vez que vejo idealizado um diagrama de sequências da UML na linha de desenvolvimento, rsrsrsrsr…
Acho que vou gostar disso (tomara, rsrsrsr)!!!
Já estava interessado em comprar o livro Use a Cabeça, não gostei muito do concorrente How To Programmer Java da Deitel… Mas preciso estudar os que tenho aqui, rssrsrrsrsrs… Senão vou só empilhando livros e depois não vou ter ânimo de estudá-los…
Eu tenho sim planos de alcançar certificações, mas meu conhecimento ainda é muito pouco… Estou planejando estudar para tirar no início do ano que vem… Acho que é importante e concordo que valha mesmo a pena!
Ficaria muito agradecido em merecer sua lista de favoritos, rsrsrs…
Um abraço!

M

Valeu pelas dicas
vou dar uma olhada no hibernate pois eu nao conheço mais ja tinha ouvido falar dele
e acredito que colocar o metodo statico ppode resolver a minha situação

qualquer coisa volta a postar de novo

Fernando_Generoso_da

Só uma coisinha…

O design pattern que retorna apenas uma instância é o Singleton, e não o Factory.

Fernando Rosa

Criado 18 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 11
Participantes 5