Sobre la arquitectura de una aplicación

Gente, quisiera que me dieran alguna orientación sobre lo siguiente. Para representar la arquitectura de una aplicación tengo lo siguiente (Ojalá se entienda):

CAPA| Elementos | Herramienta
(Cliente) | Web browser | (Ninguna)
(Presentación) | Paginas JSF | (JSF 2.0)
(Controlador) | ManagedBeans | (JSF 2.0)
(Capa de Negocio) | Clases DAO's | (Hibernate)
(Acceso a datos) | Clases anotadas como entidades | Hibernate
(Almacenamiento) | Base de datos | MYSQL

De lo anterior, con "DAO" me refiero a las clases que contienen los metodos para insertar/eliminar/etc objetos hacia la base de datos.

Aqui vienen mis dudas....
1. Es correcto mencionar que el controlador de mi aplicación serán 1 o varios ManagedBeans?
2. O los managedBeans hacen parte de la capa de aplicación?
3. Que otros errores contiene esta arquitectura?

No expongo EJB's por ningún lado, porque no conozco aún como funcionan...

Muchas Gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Algún sugerencia...

Algún sugerencia... ?
Que hay de malo en mi pregunta?

Quizá simplemente que no hay

Quizá simplemente que no hay nadie con una respuesta o comentario.

Imagen de neko069

Yo me confundo... Digo, qué

Yo me confundo...

Digo, qué no la capa de negocio, sería más donde haces... operaciones de negocio? es decir, donde aplicas reglas, haces cálculos, invocas utilerías, transacciones... y el acceso a datos, en lugar de ser las clases anotadas, serían los daos.. a fin de cuentas, tus entidades, son más "modelos" o (en la mayoría de los casos) representaciones de tus tablas.

neko gracias por

neko gracias por responder...
Con respecto a mi pregunta, no se si te entendí bien... tú propones entonces, que elimine esa parte que dice "acceso a datos"?... Podrías explicarme... estoy un tanto confundido con esto de las capas...

Qué nombre entonces le pondría a esa "capa"? La cual contiene solamente las entidades, tal vez "modelo" simplemente?
Hay otra cosa que te pregunto, según tú, la capa "de negocio" y "de acceso a datos" entonces vienen a ser lo mismo a fin de cuentas?
Saludos...

Imagen de ezamudio

no

Capa de datos son tus objetos de hibernate Y las implementaciones de tus DAO's en hibernate.

Capa de negocio son los componentes que contienen la lógica principal de la aplicación. hacen uso de los DAO's pero por medio de sus interfaces y deben ser lo más agnósticos posible de los frameworks que uses en tu app.

Los DAO's deben encargarse unicamente de manejar tus clases de dominio. Algunos frameworks fusionan clases de dominio y DAO's (p.e. Grails), permitiendote concentrarte en tu logica de negocio (que generalmente encapsulas en servicios y la invocas desde los controladores, a menos que sean cosas muy simples como CRUD's que implementas con puros controladores).

Imagen de neko069

Quedarías más o menos

Quedarías más o menos así.
( No sé porqué carajos no agarra los tags de <table>) .. en fin, más menos formateado

Capa -----Elementos -----Herramienta
Cliente -----Browser -----N/A
Presentación -----Páginas jsf -----jsf
Controlador -----Managed Beans -----jsf
Negocio -----Servicios -----Spring, CDI, servicios, con las características que menciona Enrique.
Acceso a datos -----DAO's, Modelos -----Hibernate, JPA.
Almacenamiento -----Base de datos -----MySQL, access, DBase o lo que se te ocurra.

Imagen de benek

El Controller en JSF es

El Controller en JSF es principalmente el FacesServlet, configurado mediante el faces-config.xml. Funciona como un controller encubierto, al final es en el FacesServlet donde recae todo el conjunto de reglas de navegación configuradas, dependiendo del origen de una petición (view/jsp) o respuesta (model/managed bean).

Imagen de beto.bateria

que tecnologia de spring

que tecnologia de spring utilizarias en la capa de negocios?

Imagen de neko069

@beto.bateria

Pues ... el spring core, qué no? digo, para la inyección de servicios mediante inversión de control, pues sería ése? o alguna característica más específica que necesites?

Imagen de beto.bateria

La verdad trato de no

La verdad trato de no utilizar librerias, lo que si hago con bastante frecuencia es utilizar oop, interfaces y patrones. Trato de estandarizar lo mas posible el codigo con el fin de aplicar herencia y me ha servido bastante.