Métodos de controle de associação X POJO

4 respostas
Marcelo_Magalhaes

Caros colegas,

Surgiu-me uma dúvida quando estava modelando umas classes com associações N-N. Estou usando Hibernate e criei uma tabela para as associações muitos pra muitos. Nos POJOS criei normalmente os get, set e constrotures, mas fiquei com dúvidas no métodos de "controle as associações" (adicionar e remover). Este método codifiquei fazendo uma referência cruzada, por exemplo classeA.remover(classeB) basicamente faz duas coisas remover do set de A a classe B e diz para a B remover do seu set a classe A, sendo assim usando o remover de qualquer uma das classes tenho a garantia que ambas as referências nos set foram removidas.

 A minha dúvida está no seguinte, estes métodos devem ficar nos POJOS ou nas classes de serviços deste POJOS? Ou outra solução?

Abraços a todos.

4 Respostas

A

Olá Brother…

Seguinte não conheço tanto sobre padrões de projeto, mas sei que o POJO, é somente a classe modelo, teoricamente não deve conter métodos mais robustos como remoção no banco de dados. Acho que as classes serviços destes objetos deve conter estes métodos e garantir a integridade da deleção de ambos registros.

Posso estar falando besteira, mas existe uma classe que representa a nova tabela criada N para N ? Pois se tiver, a classe serviço dela deveria se encarregar destes métodos para com o banco de dados.

Espero ter ajudado…

kenneth

Humm…

Acho que o cara ali se referia a adicionar/remover em memoria mesmo…

A persistencia seria feita pela classe de servico (ou outra)…

Cara, nao vejo problemas em manter nos POJO’s essas operacoes que vc comentou…

A nao ser que exista algum tipo de problema com performance etc e eu nao saiba
=]

Abraco.

Marcelo_Magalhaes

arthurgermano:
Olá Brother…

Seguinte não conheço tanto sobre padrões de projeto, mas sei que o POJO, é somente a classe modelo, teoricamente não deve conter métodos mais robustos como remoção no banco de dados. Acho que as classes serviços destes objetos deve conter estes métodos e garantir a integridade da deleção de ambos registros.

Posso estar falando besteira, mas existe uma classe que representa a nova tabela criada N para N ? Pois se tiver, a classe serviço dela deveria se encarregar destes métodos para com o banco de dados.

Espero ter ajudado…

Caro Arthur,

Os método que estou falando são para criar ou remover as associações e não persistir em banco. Os métodos que iram persitir (com controle de transação, rollback, etc...) estaria sim nas classe de servico de cada classe do modelo.

 No caso da associação N-N somente é necessário se criar uma classe associativa quando na associação são necessários dados da mesma, o que não é o meu caso. O que tenho é uma associação N-N "simples" sem quaisquer informações sobre a associação.

Abraços a todos.

Marcelo_Magalhaes

kenneth:
Humm…

Acho que o cara ali se referia a adicionar/remover em memoria mesmo…

A persistencia seria feita pela classe de servico (ou outra)…

Cara, nao vejo problemas em manter nos POJO’s essas operacoes que vc comentou…

A nao ser que exista algum tipo de problema com performance etc e eu nao saiba
=]

Abraco.

Caro kenneth,

Isso mesmo. Os métodos que comentei são somente para adicionar ou remover o ID do objeto de um vetor, nada a respeito de persistência.

 Ainda não fiz os teste para medir se  variação de performance quando os métodos estão na classe de serviço ou no POJO. Mas posso adiantar que pelo lógica fazer POJO_A.adicionar(POJO_N) possui menos chamadas (mensagens) e instancias que fazer SERVICO_A_ADICIONAR(POJO_B).

Abraços a todos.

Criado 21 de julho de 2010
Ultima resposta 23 de jul. de 2010
Respostas 4
Participantes 3