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?
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.
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
roger_rf
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!