Curso de Java MVC | Modelo 5 capas

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Vista.
La apariencia de la página. Son los .jsp, .html, .xhtml, etc.
→ Controlador.
Recoge la información de la vista y se la manda al BO.

BO.
Contiene las llamadas a cada una de las pequeñas operaciones independientes que componen la operación que queremos realizar. En el caso de estar realizando operaciones contra una base de datos, en el BO abrimos y cerramos la conexión con la base de datos. Llama al DAO.

DAO
En él haces operaciones contra sistemas ajenos a nuestra aplicación (una base de datos, un web service, etc.). También se le llama capa de integración.
Son las clases ‘tontas’. Contienen métodos nucleares que realizan operaciones concretas.

Base de datos

Según las recomendaciones de la JSR (Java Specification Request) y de la JCP (Java Comunity Proccess), si los casos de uso están bien definidos habrá un DAO por cada BO y un BO por cada Action.

Curso de Java MVC | Modelo 5 capas 1

En este enlace tienes una implementación con código del BO y el DAO utilizando JPA.

En este enlace tienes los códigos necesarios para implementar JPA en tu proyecto.

Recomendación: no usar métodos estáticos para llamar al BO y al DAO

Las variables definidas dentro de un método estático son compartidas por todos los hilos que llamen al método.

Por tanto:
Si tenemos un método estático consultarPaciente(int id), y dos usuarios distintos que simultáneamente llaman a este método, puede ocurrir lo siguiente:
el primer usuario consulta para la id 4 y obtiene un paciente, pero antes de que llegue al return del método, llega el segundo usuario y consulta para la id 7, modificando la variable paciente que almacena el resultado de la consulta y que es común para ambos. Por tanto, el primer usuario, obtendrá el paciente que consulta el segundo.

Ni las llamadas al BO, ni las llamadas al DAO deben ser hechas mediante métodos estáticos.

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.