Bom dia, estou com uma duvida e gostaria da opnião de vocês. É correto declarar métodos de negocio como save(), remove(), cadastra()… em uma entidade ? Quando digo entidade falo de um Entity Bean mesmo com suporte a JPA e mapeado com annotations ou xml.
Por exemplo:
@Entity
class Pessoa {
@Id
long id;
String name;
public long save() {
...
session = ... //Obtem sessão do Hibernate.
long id = session.save(this);
...
return id;
}
}
Claro eu poderia usar DAO tambem ex: PessoaDAO e declarar um metodo save(Pessoa pessoa);
Dizem que isso é o aconselhavel, gostaria de saber porque.
Poderia também dentro do método save() na classe pessoa usar o dao:
public long save() {
...
long id = pessoaDao.save()
...
return id;
}
Bom no caso de estiver usando JSF voce não pode passar parametros para o método de um command, então nao tem como usar a alternativa do DAO.
Eu poderia usar este método no entity beans ??? ou o mais correto seria criar um Managed Bean PessoaMBean ?
Ex:
class PessoaMBean {
Pessoa pessoa;
public String save {
...
long id = pessoaDao.save()
...
return "success";
}
}
É claro que eu preciso alterar o return value p/ String conforme as normas do JSF.
Também se faz necessário mapear uma no faces-config.xml p/ o attributo pessoa.
Bom é isso, quailquer opnião ou esclarecimento é bem vindo. Obrigado.