Domain Modelling Language

Model the structure of your domain entities with a lightweight Java-like domain-specific language and FF automatically generates all the support code.

Strong Consistency

Use a Software Transactional Memory to provide Strict Serializability for Enterprise Applications.

Transparent Persistence

Application state is automatically transferred to/from the underlying storage system.

 

BackEnds

Regardless of which backend the programmer uses, the Fénix Framework provides automatic management of bidirectional relations between domain entities modelled in DML (for example, when adding an object to a collection, both ends are updated).

Bundled with Fénix Framework 2.0, there are currently two backend implementations: The Infinispan Direct backend, and the OGM backend. Both backends provide bindings to the underlying storage provided by Infinispan's cache. However, each backend provides a different mapping between the objects and their key-value representation.

Infinispan Direct backend

The Infinispan Direct backend leverages on the fact that Infinispan's cache is already build into the application's memory space, and thus uses very lightweight domain objects. These objects' attributes and relations to other objects don't take up any additional memory space. Whenever the value of any attribute or relation is requested, the generated code fetches the value directly from the corresponding cache entry in Infinispan. As such, the objects themselves, are hollow, in the sense that they only contain their primary key attribute.

OGM Backend

The OGM backend relies on Hibernate Core's engine, stacked with the Hibernate Object/Grid Mapper to do the actual load/store operations from/to Infinispan. As such, the code generation for domain entities creates typical POJOs together with a standard Java Persistence API mapping.

STM-based backends

The first implementations of the Fénix Framework (prior to version 2.0) have no notion of replaceable backend, and support only an STM-based transactional system (using JVSTM). The main development branch supported only data storage on top of MySQL using OJB as data mapper. There was, however, parallel work that supported some NoSQL storage systems (HBase, Berkeley DB, Infinispan) to a limited extent. Namely, on top of NoSQL databases, Fénix Framework only supports a single node, whereas on top of MySQL it can run multiple application servers.

We are currently working to develop and STM-based backend on the new architecture. We plan to provide storage support for at least MySQL and Infinispan.

 
 

© 2008-2013 Fénix Framework
Based on template design by Andreas Viklund