Persistir atributos privados  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Gostaria de uma ideia de como persistir atributos privados de uma classe sem expo-los para o ambiente externo.
ex:


Não tem setId, pois esse campo é atribuido internamente.
O ambiente externo não pode atribuir valor para ele, somente consultar.
Como eu faria para recuperar ou persistir esse campo em um DAO e no Hibernate ?




O bom menino !!!
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Hibernate trabalha sem getters e setters:
http://wrschneider.blogspot.com/2005/01/avoiding-anemic-domain-models-with.html
Legal né

Mesmo que não use Hibernate, pode fazer alguma coisa com reflection. E não é a mesma coisa que usar setters. Persistência é um problema que precisa ser resolvido, mas não é por causa dele que você precisa ferrar o resto hehe

Former LIPE.
[ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Mas nestes casos se a segurança do JVM não permitir que os atributos sejam acessados ?
Tem alguma coisa nesse sentindo Security...Alguma coisa que eu não lembro.

O bom menino !!!
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Tem sim!

Se por algum motivo o ambiente de produção tem essa restrição, você pode usar um desses:
http://jakarta.apache.org/bcel/index.html
http://cglib.sourceforge.net

Ou implementar você mesmo algo semelhante, o que não é _tão_ dificil assim.

Aliás, esqueça todo o resto e use Hibernate hehe

"Ah, é mais fácil ter getters e setters". Você que sabe, oras

This message was edited 1 time. Last update was at 28/04/2005 11:52:46


Former LIPE.
[ICQ]
mister__m
Virtual Machine Man
[Avatar]

Membro desde: 18/03/2005 16:13:17
Mensagens: 736
Offline

Se você criar um private setter, o Hibernate consegue persistir sem problemas.

Michael Nascimento Santos, aka Mister M

Summa Technologies do Brasil - http://www.summa-tech.com/
genesis: Uma nova forma de desenvolver aplicações - https://genesis.dev.java.net/
ThinNB: Suporte a Thinlet no NetBeans - https://thinnb.dev.java.net/
Líder da JSR-310 - Date and Time API
Expert Group Member das JSRs 207 (PD4J), 250 (Common Annotations), 270 (Java 2 SE 6.0), 296 (Swing Framework) e 303 (Bean Validation)
SouJava: Fortalecendo a comunidade Java brasileira - https://soujava.dev.java.net/ https://www.soujava.org.br/
JSR Community @ java.net - http://community.java.net/jsr
Blogs - http://blog.michaelnascimento.com.br/ http://today.java.net/pub/au/80
Twitter - @mr__m
[WWW]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Mas em uma DAO ?
se eu extendesse o objeto a partir de uma classe com métodos para trabalhar a persistencia
ex:



Isso fica legal ?

O bom menino !!!
Filipe Sabella
GUJ Expert

Membro desde: 12/03/2003 11:25:57
Mensagens: 4680
Offline

Isso tem nome já
http://www.martinfowler.com/eaaCatalog/activeRecord.html

Novamente, não sou nenhum expert em patterns, mas ActiveRecord + IoC cheira bem para mim.

Former LIPE.
[ICQ]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Voce pode usar métodos e atributos package protected e colocar classes auxiliares de persistencia no mesmo pacote dos teus objetos de domínio.

This message was edited 1 time. Last update was at 28/04/2005 14:21:29


http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Essa ideia é muito boa.
Fica a mais elegante e menos gambiarrenta.

Mas eu poderia ter vários DAOs para diferentes tipos de dados.
Como eu lidaria com isso ?
Colocaria todos os DAOs dentro do mesmo package da classes de negócio ?

Mas o caminho é por aí mesmo...

This message was edited 1 time. Last update was at 28/04/2005 14:28:14


O bom menino !!!
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Ou você pode usar um pouco de mágica com reflection, o ruim é que você perde a tipagem forte do java.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Tive uma ideia vejam se fica tosca

O bom menino !!!
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Nessas horas é que eu vejo que é melhor deixar dados e operaçoes tudo na mesma classe.
Se a classe Funcionario se persistisse esse problema não ocorreria.

Mas como criar uma classe de negócios que se auto-persista e ainda permita diversos mecanismos de persistencia ?


O bom menino !!!
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

jprogrammer wrote:Nessas horas é que eu vejo que é melhor deixar dados e operaçoes tudo na mesma classe.
Se a classe Funcionario se persistisse esse problema não ocorreria.

Mas como criar uma classe de negócios que se auto-persista e ainda permita diversos mecanismos de persistencia ?



Delegates, Strategy, State.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Exemplifique

O bom menino !!!
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline



O livro do GOF explica State e Strategy muito bem, leitura recomendada.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team