Deployment instructions: 1)install the folowing s/w:   a)H2  http://www.h2database.com/html/download.html   b)Tomcat http://tomcat.apache.org/download-80.cgi   c)maven http://maven.apache.org/download.cgi 2) change the following variable in pom.xml appropriatelly: ${PATH_TO_TOMCAT_webapps/appname} 3)run the "mvn clean install" command in project directory 4)start tomcat   Description of the project structure and the decisions made:  The presented project is structured into 3 logical layers according to MVC pattern.  A)Views are presented by jsp pages utilizing jstl. Unfortunalelly i am completely unfluent in facelets thats why i choose jsp. My bad. Will study.  B)Controllers are self explainatory. Being annotated with @ReqiestMapping and @Modelattribute they trigger  appropriate actions on the model and providing corresponding views.  C)Model  consists of Repository and Service sublayers. Repository is responsible for database ORM interactions.  Service is responsible for the business logic of this great enterprise app: beans validation, password encoding,  providing appropriate interface to DAO for the controllers and framework,  managing transactions(actually no manual transaction management is present in given app) etc.    In order to build the above structure I have used the following key frameworks abstractions and implementations:  Persistance:   Hibernate is used to persist objects to DB. It is industry standard technology for ORM building and    is comprehensively supported by Spring.   DataSource is provided by Apache-commons  "org.apache.commons.dbcp.BasicDataSource"    which supports a pooled DB connection.  Db session and transaction  management:   a)Session factory - Spring "LocalSessionFactoryBean" : supports annotation based config,expose plain hibernate sessions,   seamlessly work with a request-scoped Session managed by OpenSessionInViewFilter/Interceptor.   b)Transaction manager -"HibernateTransactionManager":  common Spring transaction manager for Hibernate.   c)OpenSessionInViewFilter/Interceptor - Spring inplementing class: "OpenSessionInViewFilter"    This approach provides support for lazy loading of comlex objects from DB .Though lazy loading is yet not used   in this app, it has a great probability to get there as the app grows.     Bean validation:   Implementd according to JSR-303 specification supported by Springs "LocalValidatorFactoryBean"    wired to Hibernate "BeanValidationEventListener" which is in turn registered in session factory.  Authentication management:   Implemented with authentication manager supplied by Spring-security.   It uses Spring "DaoAuthenticationProvider" to get users from DB via Hibernate.    Passwords are secured by Spring "StandardPasswordEncoder" which internally provides salt.