Entidad JPA como JSF Bean?

¿Tiene sentido usar Entidades como JSF Backing Beans?

@Entity @ManagedBean @ViewScoped public class User { private String firstname; private String lastname; @EJB private UserService service; public void submit() { service.create(this); } // ... } 

¿O es mejor guardarlos por separado y transferir los datos del bean de respaldo a la entidad al final?

 @ManagedBean @ViewScoped public class UserBean { private String firstname; private String lastname; @EJB private UserService service; public void submit() { User user = new User(); user.setFirstname(firstname); user.setLastname(lastname); service.create(user); } // ... } 

Podrías hacerlo Es técnicamente posible. Pero funciona (diseño) funcionalmente no tiene ningún sentido. Básicamente, estás ajustando el modelo con el controlador. Por lo general, la entidad JPA (modelo) es una propiedad de un bean gestionado JSF (controlador). Esto mantiene el código SECO . No desea duplicar las mismas propiedades en todos los lugares, y menos anotaciones sobre las limitaciones de validación de beans.

P.ej

 @ManagedBean @ViewScoped public class Register { private User user; @EJB private UserService service; @PostConstruct public void init() { user = new User(); } public void submit() { service.create(user); } public User getUser() { return user; } } 

con esta página Facelets (vista):

      ...   

Ver también:

  • ¿Qué componentes son MVC en el marco JSF MVC?
  • Controlador JSF, Servicio y DAO
  • Explicaciones contradictorias de MVC en JSF
  • JSF 2 reutilizando la validación definida en las entidades JPA?
  • ¿Por qué la entidad no debe ser administrada por el marco JSF?