Jeito certo de persistir objetos

Olá pessoal, to iniciando com com desenvolvimento web agora. Mexendo com jsf me deparei com uma dúvida, quando eu for, por exemplo, persistir um objeto… eu devo passar primeiro os dados da página para um controlador e daí dentro dele instaciar e persistir o objeto? Ou o próprio objeto que receber os dados pode conter as funções de persistência?

Se for passar os dados para um contralador… o contralador tera que ter uma lista de todos os atributos de todos os objtos, muito incoveniente não?

Se alguem com experiência puder me ajudar, agradeço. Vlw!

Se entendi bem a dúvida normalmente se tem uma página jsp/jsp que passa as informações para um controlador, uma Action do caso do Struts. Dentro desse controlador você instância uma outra classe, passando o objeto a ser persistido, que será responsável propriamente para persistir os dados.

Procure saber o conceito de MVC pois irá esclarecer melhor as coisas.

Espero ter ajudado.

Quando você fala controlador está, na verdade, falando de MBs (managed beans) do jsf, certo?
Bom, nesse caso, posso te dizer que não é necessário ter todos os atributos do seu entity no MB,
basta ter um único atributo, no MB, referenciando sua entity.
Algo mais ou menos assim:

Entity:

public class MyEntity{
    ...
    private Integer id;
    private String name;
    //...gets, sets, e comportamentos (ou regras de negócio)
    ...
}

MB:

public class MyManagedBean{
    ...
    private MyEntity myEntity;
    public MyEntity getMyEntity(){...}
    public void setMyEntity(MyEntity entity){...}
    ...
}

Arquivo pagina.jsp:

...
    Nome:<h:inputText value="#{myManagedBean.myEntity.name}" />
...

Automagicamente a instância do seu entity será populada com os dados inseridos na tela.
Você não precisará colocar nada relativo a persistência no entity e tampouco encherá o MB de atributos desnecessários que poluiriam seu código.

:wink:

[quote=edysnipes]Se entendi bem a dúvida normalmente se tem uma página jsp/jsp que passa as informações para um controlador, uma Action do caso do Struts. Dentro desse controlador você instância uma outra classe, passando o objeto a ser persistido, que será responsável propriamente para persistir os dados.

Procure saber o conceito de MVC pois irá esclarecer melhor as coisas.
[/quote]

Concordo contigo, coisas relativas a persistência não devem ficar no entity e muito menos nos managed beans, isso deve estar encapsulado em uma camada própria. Nesse caso existem alguns conceitos como MVC, ORM que vão ajudar muito… depois vem DDD, TDD… a coisa vai ficando cabulosa…
Mas vamos devagar, um passo de cada vez.
Comece com algo mais simples e vá evoluindo. Ter um MB fazendo o meio de campo entre seus entities e suas views já é um excelente começo!
Siga o exemplo que te passei que vai ficar legal, depois você vai estudando um pouco mais e melhorando as coisas.

Pow cara, vlw!
Muito obrigado!