Child pages
  • FenixEdu Common Architecture
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Current »


The FenixEdu Common Architecture is how most of the development made in by our FenixEdu team, and for the project as a whole. It comprises the technologies that we use and also the architecture we put in place so you can extend our applications for your organisation needs.


Most applications have a great number of dependencies and uses several technologies that have been added to the project along with its development. Instead of talking about all of them we will just mention some of the more important ones to our architecture and its use will be described has we explain our architecture. 

  • Java 8
  • Java Server Pages
  • Java Server Faces
  • Struts
  • Maven
  • MySQL
  • Fenix Framework
  • Bennu
  • Bennu Renders

Application Structure

This is how our architecture looks like:


Persistence Layer

Fenix Framework is a Java ORM that enables you to express the domain model as entities, the relations between the entities and its attributes. After having this specification, the framework automatically creates the Classes that implement the existing relations. You just have extend that classes and implement the application logic. 


The framework takes care of the persistency layer, saving the changes to the entities on the database (MySQL). It also handles the transactions and provides ways to ensure consistency. All the data is kept on memory and the transactions are also done on memory. The updates done are saved on the database from time to time. To learn more about this take a look at <MISSING>

Application Layer

For the applicational layer we have developed a framework that provides a bunch of common artefacts consistently across our applications. Its called Bennu Framework and you can learn all about it here  


Virtually all FenixEdu applications have a Model-View-Controller structure. 

  • No labels