Anotaçoes JPA nos Getters ou Setters? Onde voce Anota?

10 respostas
Andre_JavaWorld

Bom dia Pessoal,

Acompanhado o blog da caelum, deparei um tema um tanto curioso: http://blog.caelum.com.br/2007/06/25/jpa-anotacoes-nos-getters-ou-atributos/ , sei que como esta descrito no proprio blog, é um assunto até certo ponto banal, porem eu pelo menos numca vi ninguem anotar getters, alguem aqui anota? quais seriam as possiveis (por menores que sejam) vantagens de se anotar um getter ao invez de um  atributo?

Abraços :stuck_out_tongue:

André Martins

10 Respostas

Cristiano_de_Barros

Olá,

No meu trabalho as anotações são todas feitas nos getters, porém eu prefiro nos atributos, eu acho que fica mais fácil de visualizar.
Em relação a diferença, acho que é só questão de costume, nos livros/artigos que li, não era citada nenhuma vantagem nem de um nem de outro.

Abraço

Andre_JavaWorld

Tambem tenho esta visao Cristiano,

Porem se levarmos em conta que o hibernate ira utilizar reflection para ler nossos campos, ele ira ler o getter, e nao o atributo em si diretamente (me corrijam se eu estiver errado!), dai a questao de uma possivel performance ou vantagem em situacoes particulares, so que nao vi nada mais pratico ou detalhado sobre o assunto.

Obrigado pela Resposta Cristiano, mais alguem?

Abraços

André Martins

R

Eu anoto nos getters. Anotar diretamente nos campos pode lhe dar um pequeno ganho de desempenho, mas normalmente é um ganho tão discreto que não chega a fazer diferença. Prefiro usar os getters porque dessa maneira o Hibernate (ou qualquer outra solução de JPA) usará a mesma semântica de acesso a dados que o desenvolvedor usa nas demais seções da aplicação.

Andre_JavaWorld

Ola Roger,

Nao entendi quando voce disse " Prefiro usar os getters porque dessa maneira o Hibernate (ou qualquer outra solução de JPA) usará a mesma semântica de acesso a dados que o desenvolvedor usa nas demais seções da aplicação." como assim usara a mesma semantica? esta falando de relacionamentos?

Abraços

André Martins

R

Nem tanto os relacionamentos, mas realmente a forma de acesso. Por exemplo, numa caixa de diálogo ou página Web você pode usar “cliente.getNome()” para ler o nome do cliente. Se o Hibernate usar “cliente.nome”, lendo o nome do cliente diretamente a partir do campo em vez de usar o get(), então estará usando uma semântica diferente daquela do desenvolvedor, que usou get() na interface gráfica. Assim, procuro fazer com que todas as áreas da aplicação façam acesso às propriedades da mesma forma, usando get(), a menos que haja um motivo forte para que isso não aconteça.

Cherubini

Eu trabalho com Jboss Seam, e lá n tem jeito(pelo q vi e estudei e no servico nao consegui colocar nos atributos) tem q ser nos getters!!!

renanreismartins

roger_rf concordo plenamente, aqui tive um caso onde precisei fazer conversao de tipos nos getters e setters (devido ao jpa nao persistir campos joda-time)…

abrassss

Andre_JavaWorld

Obrigado pelas respostas pessoal, mas qual conceito fez voces anotarem os getters, a grande questao é porque eu deveria anotar um getter e nao um atributo?

Abraços

André Martins

renanreismartins

Andre_JavaWorld anotar no getter faz com que sempre que o campo seja acessado, a logica presente no getter seja executada, se vc anotar direto no campo essa logica que pode estar no getter nao é acessada e pode quebrar o encapsulamento…

a questao é: se vc usa getters e setters sem nenhuma logica dentro, nao faz diferença.

abrassss

Andre_JavaWorld

Obrigado Renan, ficou claro agora o porque, obrigado pelas respostas de todos!

Abraços

André Martins

Criado 24 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 10
Participantes 5