Modo correto de Programar utilizando ResultSet - SQLServer  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Alvaro Junqueira
HelloWorld
[Avatar]

Membro desde: 17/03/2011 13:33:32
Mensagens: 14
Offline

olá pessoal, estou com algumas duvidas em relação a O.O. e Java
(eu programo em VBA apenas e o modo que eu programo em VBA é logicamente diferente...)

Minhas dúvidas são as seguintes:
1) Quando carrego um SELECT em um ResultSet, estou carregando todos os dados do resultado da query nela certo?
pois estou fazendo uma Agenda para mim, e tenho uma tela de Contatos que tem 3 componentes essenciais:
- uma JComboBox para localizar os contatos
- uma JTable para mostrar os telefones do contato que está na tela
- e os Campos JTextField, para as informações do contato

e acabo fazendo alguns ResultSet's, um para cada ocasião....

2) A estrutura que montei, não sei, está de acordo com a programação O.O e com os padrões do JAVA?

Minha Estrutura:

Packages:
ClassesDeNegocio - onde eu guardo as classes que ficam os atributos, as querys, getters e setters, métodos do banco (Insert, Update..)
ClassesDeServiço - onde eu guardo algumas classes que me ajudam na programação (métodos que contam registros, métodos para manipulação de datas..etc.)
ClassesDeTela - aqui ficam os JFrames

Interfaces:
Na classe de Padronização, eu criei uma interface, para sempre que eu criar uma classe de negocio, ter que implementar os métodos de banco (Update, Insert, Salvar(que decide se é update ou insert))

agora vejam o código da minha ClasseDeNegocio Contato:



até acho que está bonitinho, maaaas, tenho vários ResultSet, tenho um gato ali no carregarPessoasCombo() aonde eu concateno o ID só para fazer a busca! hehe
eu preciso de tudo isso que faço?
eu deveria apenas carregar todos os dados em um ResultSet e depois manipula-los?

muita pergunta né??rsrs

--
Álvaro Junqueira
[MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Está funcional, mas para ficar OO e mais correto, você precisa:
1. Criar classes de negócios para representar suas entidades (classe Pessoa, Endereco, etc.);
2. Criar uma classe exclusiva para manipulação dessas classes no banco (PessoaDao, EnderecoDao, etc.);
3. Fazer com que essas classes carreguem os dados em listas, do respectivo tipo da classe que representam;
4. Fechar o ResultSet, o Statement e a Conexão, preferencialmente dentro de um bloco finally.
5. Usar um Pool de conexões.

Pontos positivos da sua implementação:
1. Você já usa PreparedStatement;
2. Seu código está bem estruturado, para um sistema não OO;


Ao modificar, você poderá ter a combo preenchida com objetos do tipo Pessoa, o que eliminará a necessidade de concatenar o ID.
A JTable também funciona melhor com objetos, como vc pode ver nos links da minha assinatura (não use DefaultTableModel).


Finalmente, quando for abrir tópicos, procure ler a lista de tópicos com atenção. Você abriu em Java Básico. Seu tópico se encaixa mais no fórum de persistência. Vou move-lo.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Alvaro Junqueira
HelloWorld
[Avatar]

Membro desde: 17/03/2011 13:33:32
Mensagens: 14
Offline

Obrigado VinyGodoy

1. Então a classe de negocio separo em um package
nessa classe terei, as variaveis de instancia, o encapsulamento das mesmas, e só?

2. Ai nessa outra package, terei os inserts, updates, selects para carregar componentes, etc.. (DAO?)

3. beleza..

4. Hoje eu fecho o ResultSet, depois que acabo de fazer o procedimento, só quando se trata de fechar o ResultSet que carregou a tela, eu fecho ele quando fecho a tela, vou ver como consigo melhorar nisso

5. Isso não sei como é, vou pesquisar sobre tal

Obrigado pelos pontos positivos, eu pesquisei sobre PrepraredStatement, quando estudava SQL Injection..

é verdade, nem me liguei que a Combo armazena objetos (e olha que eu via isso quando ia recuperar o qu estava escrito!(rsrs))
sobre a JTable, eu faço como voce falou pra não fazer: DefaultTableModel



vi os links que me levaram na sua assinatura, é meio complicadinho hein...rsrs...criar na mão a bagaça!
mas se vai me permitir uma melhor manipulação da JTable, bem melhor, achei dificil mesmo mexer com JTable

eu coloquei nesse tópico, por não achar que se trata apenas de JDBC, e sim mais de OO!!

--
Álvaro Junqueira
[MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Alvaro Junqueira wrote:eu coloquei nesse tópico, por não achar que se trata apenas de JDBC, e sim mais de OO!!


Ah, ok, sem problemas.


Não se assuste com o código do JTable. Parece complicado, mas na prática, você terá menos trabalho e menos dor de cabeça do que se usar o DefaultTableModel. Sem falar que quando você entender o que o código faz, vai ver que é até mais simples do que ficar copiando dados dos seus objetos para o model, e tentando sincronizar as duas coisas depois.

This message was edited 1 time. Last update was at 04/02/2012 10:41:50


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team