Objetos POJO dentro de uma JTable  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

Mark_Ameba wrote:ty

Eu só decedi retirar a parte do meu sistema que da pra todo mundo usar, separar nesse projeto e ajudar as pessoas.

Idéias são bem vindas. ^^


Fala Mark, estou aqui denovo, surgiu uma dúvida agora, e tenho duas alternativas, gostaria de saber qual delas é a melhor.

Eu tenho uma classe POJO chamada VendedorPOJO(Este é o vendedor), e outra chamada VendaPOJO (Esta é a venda, nela eu digo quem é o vendedor com um atributo do tipo integer chamado idVendedor).
A QUESTÃO:
Preciso mostrar na minha tabela a data da venda (VendaPOJO) e o nome do vendedor (O idVendedor está na VendaPOJO, mas o nmVendedor está na VendedorPOJO).

Consegui duas soluções:
1) Ao invés de armazenar o idVendedor, armazenar o VendedorPojo, porém, precisarei fazer SQL's ao criar estes objetos (ACHO QUE ESTE é O MELHOR) [NA HORA DE POR NA TABELA EU BUSCO COM O PARENT, CORRETO?];
ou
2) Fazer um atributo chamado nmVendedor na classe VendaPOJO e armazenar os dados nele (ESSE ACHO PIOR)

Você acha que existe outro meio de fazer isto? qual destes você me indica?

Obrigado amigo!

"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Eu indico manter a referencia a um VendedorPOJO invés de só o id parece mais OO.

Dai pra tabela voce ia passar algo como:

(VendaPOJO.class, "vendedor.nome")



Voce esta usando Hibernate? Ou SQL puro?

Outra forma é ter um objeto que representa os dados. Voce nem precisa ter todos dados da Venda nem de Vendedor, apenas aqueles para aparecer na tabela e dados adicionais como ID se voce quiser pegar da tabela esse objeto e pegar o respectivo objeto como Venda ou Vendedor.
É a unica maneira que vejo para não ter que alterar seus POJOs.

PS: Voce coloca POJO no final das suas classes de modelo mesmo?

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

Não uso Hibernate, eu ia utilizar, mas nunca havia mechido e precisava fazer este programa meio rápido (2 meses no máximo)
Ai até eu aprender Hibernate bem, complica um pouco, mas no futuro quero migrar ele.

PS: Voce coloca POJO no final das suas classes de modelo mesmo?

Como assim?
Eu possuo uma pacote POJO, onde tenho os objetos como se fossem as tabelas do banco, e tenho um pacote DAO onde efetuo as operações passando estes POJOs como parâmetros.

Outra forma é ter um objeto que representa os dados. Voce nem precisa ter todos dados da Venda nem de Vendedor, apenas aqueles para aparecer na tabela e dados adicionais como ID se voce quiser pegar da tabela esse objeto e pegar o respectivo objeto como Venda ou Vendedor.
É a unica maneira que vejo para não ter que alterar seus POJOs.

Veja se entendi. Criar um objeto o qual irei colocar apenas o que eu quero que exiba na tabela, não sendo necessariamente o meu POJO?
Se for isso seria legal, não havia pensado nisso! Fica simples e não preciso alterar muito meus POJOs

Outra pergunta. Sobre os meus POJOs, quando há ligações de FKs eu uso apenas os IDs como int em meu POJO, o correto é usar a referência do outro POJO, ou é indiferente?

"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Eu perguntei sobre usar POJO no final dos nomes por curiosidade mesmo.

É que eu não chamaria as classes de VendaPOJO e VendedorPOJO. Apenas Venda e Vendedor. Mas isso é questão do programador e não altera nada o resultado.


E é isso mesmo que voce entendeu. Fora os dados para a tela pode guardar também os ids dos objetos que esse objeto representa. Assim fica fácil obter o objeto original no banco.



Como eu uso o hibernate ele já faz essa parte das FKs por mim. Eu mantenho a referencia mas no banco guarda apenas o id como FK.

Voce pode guardar a referencia mas no banco manter a FK e sempre buscar e setar o objeto correto ao carregar.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

Eu uso o POJO no final sim, sei la porque, me acostumei a usar, haha.

Maravilha!

Eu decidi fazer da melhor forma, ao invés de armazenar só os IDs, armazenar o objeto, fica muito melhor!

Mas obrigado!

Outra coisa, parabéns pelo Formatter da sua API, agora precisei usar, show de bola!
O conteúdo do seu site está excelente, exemplo simples e que ajudam bastante.

This message was edited 1 time. Last update was at 16/07/2009 09:42:45


"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
thiagofesta
JavaGuru
[Avatar]

Membro desde: 19/12/2007 10:42:11
Mensagens: 233
Offline

Uma questão sobre o Formatter.
Quando que ele usa o método parse(String s)? eu implementei, mas quando ele é usado?

E o getName()?

This message was edited 1 time. Last update was at 16/07/2009 09:36:15


"É melhor calar-se e deixar que as pessoas pensem que você é tolo, do que falar e acabar com a dúvida"
Abraham Lincoln
[WWW] [Yahoo!] [MSN]
Marky.Vasconcelos
Moderador
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 5932
Localização: São Paulo/SP
Offline

Quando voce seta o valor setEditableDefault do model para true as celulas sao editaveis. E após alterar alguma esse método é chamado com a String que veio da célula e já altera no objeto correspondente na propriedade certa.

o getName é usado para o Binder quando voce passa o formatter para o componente como "[fmt:int_formatter]" nesse caso algum Formatter passado por parametro deve retornar essa String ("int_formatter") pelo getName.

Facebook @MarkyHitchhiker +Mark WP: MarkyTech's

Projects:
Android Roadmap - Aprenda Android do inicio (Java é o unico pre-requisito)
Towel ( ObjectTableModel & Swing & Utils )
Tower Defense Game - Java2D [Open-Source] [How-to-play]
EVGD: Programação de jogos (links) Ponto V! - Desenvolvimento de jogos para indies, curiosos e profissionais

DefaultTableModel?! PARE! Não faça isso! Faça melhor!

Dicas: Faça perguntas inteligentes! ; MigLayout ; GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

DON'T PANIC!
MarkyHitchhiker's Blog!
[WWW] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team