Elmo can use any Sesame repository that may or may not need a database. The two repositories used in this user guide, NativeStore and MemoryStore, do not use a database. Other repositories that use a backing database may scale better under higher volume or load.
The generator module can facilitate creating your own concepts, but Elmo also includes support for DynaBeans that allow accessing predicates by their local name, without using a concept interface.
The concept subject types are assigned to the entity through the predicate "http://www.w3.org/1999/02/22-rdf-syntax-ns#type". This predicate is available in the org.openrdf.concepts.rdfs.Resource concept as property rdfType. By creating rdfs:Class entities for the subject type, they can be added to and removed from any entity, just as property values are added and removed. Once the subject types of a entity have changed, the entity must be retrieved again through designate or find.
Entitys keep their state in the repository and cannot be serialized in isolation. However, their QName can be serialized, and the entire repository can also be serialized.
Elmo concepts must first be created, see the Section called Creating Concepts and Ontologies. Since Elmo concepts are also Java interfaces, a existing concrete domain model could also implement the concepts, this would allow the same model to work in both Elmo and other entity pools.
When two behaviours implement the same method and are being integrated into the same class, Elmo chains the methods together calling one after another in no particular order until a value is returned or all methods have been called. See the Section called Chain of Responsibility for more information.
If the property types are the same, both setter methods will be called when the property is set and only one will be retrieved when the property is read. If the property types are not the same an exception is thrown when the concepts are combined.
Elmo supports interceptors that can be matched to some or all methods implemented by any role. Through this, cross cutting concerns like logging and security can be implemented in an Elmo entity pool.
By using interceptors to wrap a method invocation, events can be triggered before and after a method call. Elmo also provides the PropertyChangeListener stated in the Section called Observer.
On servlet initialization, the repository and manager factory should be initialized. For each request a new ElmoManager should be created and its Entitys can only be used within the request they were created with. The manager should be closed after the request is complete. The manager factory should be closed when the servlet is destroyed.
Create an interceptor to log the operations of every type and every method.
Elmo supports data contexts. In the Section called Context Specific Data it was shown how property values can be stored within a context. This can be used to separate security domains.