Para la capa modelo de la aplicación utilizamos diversos patrones de diseño que serán comunes a todas las iteraciones. Los principales patrones que utilizamos serán las clases de persistencia denominadas POJO que simplemente representa el estado de los valores de los objetos más simples. Los DAO que son los objetos de acceso a datos y que en nuestro caso, dado que utilizamos Spring e Hibernate implementan a su vez un patrón denominado Layer Supertype que tiene como base la clase HibernateDaoSupport que no detallaremos aquí. Y por último la capa superior del modelo que está constituído por el patrón Facade (Fachada). Sobre el patrón fachada utilizamos además el patrón Factory con el fin de ocultar la tecnología que utilizan las fachadas.
De este modo lo que tenemos es una serie de DAO’s que manejan la persistencia de los POJO’s utilizando Hibernate y una serie de Fachadas que representan a casos de uso lógicamente relacionados y que utilizan los DAO’s asegurando la transaccionalidad mediante Spring, para ello deberemos de tener debidamente configurado el fichero de configuración de Spring (applicationContext.xml).
Podemos ver en la imagen un ejemplo de una fachada, en concreto, la fachada para la primera iteración en la que se engloban los casos de uso que se abordan en esta:
