Architecture

The overall architecture follows the standard three-tier (and can be extended to N-tier) architecture in order to deal with any number of web-based client-server-database systems.

design patterns

The client to server communication is handled as JSON over REST, which means that the server endpoints follow RESTful practices. From a server-side perspective Data Transfer Objects (DTOs) are what the server exposes to the client, while the serialization (where application) from entity to DTO and vice versa are handled automatically by Dozer. Transaction management is handled by JPA, while entity mapping is taken care of by Hibernate. All of this occurring on a Spring based mid-tier, in which technologies can be easily substituted for any because of the overall modular design.

The end result is a highly maintainable system that is both easy to understand and develop within. A separate Wiki site is dedicated to all of the specifics regarding how to develop in this particular architecture, tailored to the available technology stack.