Mapeamento no VRaptor 3

5 respostas
J

olá a todos,

pessoal é o seguinte, o hibernate popula os POJO’s por métodos getters ou setters, certo?
mas, se você definir seus atributoos como públicos, não se faz necessário tais métodos (o que pra mim é bem mais limpo, já que meus setters apenas setam os valores)

a questao é a seguinte:

o vRaptor popula os objetos invocando os métodos setters só que eu queria saber se é possível configurá-lo para que ele nao chame um método, mas sim, definir o valor do atributo numa atribuição direta
alguém já utilizou ou sabe algo sobre o assunto??

muito obrigado!
valeu!

5 Respostas

Lucas_Cavalcanti

Josueh:
olá a todos,

pessoal é o seguinte, o hibernate popula os POJO’s por métodos getters ou setters, certo?


Errado. Se vc anotou o @Id em um getter, o hibernate usa getters e setters, se anotou em um campo, ele acessa o campo direto

não deixe seus atributos públicos. É uma péssima prática, pois vc fere o encapsulamento dos dados.
Infelizmente java não tem um jeito mais bonito de fazer o encapsulamento do que getters e setters… se o problema é escrevê-los: no eclipse => ctrl+3 => escreva ‘getter’. Em java é padrão vc ter os getters e os setters mesmo (onde eles fazem sentido!) e vários frameworks se baseiam nisso, inclusive o vraptor.

o vraptor usa getters e setters. Se os seus atributos forem públicos e não tiverem getters vc não consegue mostrá-los na JSP, ou seja, eles são inúteis pra aplicação.

Como eu disse, é o padrão do java, não tem como fugir… gere os getters e setters (automaticamente de preferencia)

J

opa!
calma amigo!

rapaz, gerar código getters/setters pode até ser legal (mas, eu nao acho) …
acho que qualquer IDE Java faz isso, mas

  • por que eu deveria gerar código getter e setter se na GRANDE marioria das vezes eles ficarão assim:

public void setNome(String nome) { this.nome = nome; }
public String getNome() { return nome; }

/** atente bem, eu realmente costumo utilizar no método “inline” rsrsrsrs */

entao, sou muito mais deixar púlicos do que gerar código sem sentido (repito, pelo menos pra mim)

obrigado pela ajuda! (…em tudo crescemos…)
fllws!

Lucas_Cavalcanti

sim… e como eu disse, infelizmente o java não tem outro jeito melhor de fazer encapsulmento de dados a não ser getters e setters e atributos privados

se vc programa em java, e não usa pojos, vc não vai conseguir usar a maioria dos frameworks, pois eles se baseiam no fato que vc usa isso… é padrão/convenção da linguagem…

de qqer forma, o que acontece se algum dia vc quiser que um campo seja somente leitura? vc vai ter que mudar a aplicação inteira…

o que acontece se vc tiver que adicionar qqer lógica de negócio ao setar um campo? Vc vai ter que mudar a aplicação inteira

o que acontece se o nome do seu campo trocar de xxx pra yyyy? vc vai ter que mudar a aplicação inteira

o que acontece se vc quiser mudar o tipo do campo pra um tipo um pouquinho diferente mas com uma conversão direta? vai ter que mudar a aplicação inteira

enfim, o encapsulamento dos dados existe por vários motivos, se vc ignora ele vc pode se dar mto mal no futuro…

e o fato do código ser repetitivo não quer dizer que ele seja inútil… do mesmo jeito que vc sempre tem que escrever private Tipo nomeDaVariavel, vc tb tem que colocar os getters e setters… eh como se fizesse parte da linguagem…

J

entendi
essas ideias eh o rails e o django trocando minhas idéias de programacao … rsrs

valeu cara pela ajuda
flws!

Lucas_Cavalcanti

mas cuidado: no rails e no jango vc nunca acessa o dado diretamente…

os attr_acessors do ruby geram dois métodos

def atributo
    @atributo
end
def atributo= valor
    @atributo = valor
end

ou seja, são getters e setters! só que com uma sintaxe mais bonita

Criado 20 de maio de 2010
Ultima resposta 21 de mai. de 2010
Respostas 5
Participantes 2