SPT Object Database is a pure Java Object Database developed around the Prevayler transactional object persistence framework. It attempts to address some of the most glaring deficiencies in Prevayler while making full use of its great features.
An object database is a persistent storage engine of objects1 in much the same way that a relational database is a storage engine for raw data. The following are the basic attributes that we feel are required in an object database.
1. Persistent store for objects and object graphs.
1. Persistence by reachability.
2. Transparent handling of references to other persisted objects. Honour references when de-serialising a serialised persissted object.
2. Transactional semantics for object storage and management.
3. Query mechanism to retrieve objects.
4. Handling of indices and constrains declared on the objects being persisted.
5. Managed relationships - both uni-directional and bi-directional relationships between the persistent objects.
6. Fault tolerance.
7. Simple backup and recovery processes.
8. Simple to use without having to write a lot of code.
Prevayler is an open-source transactional object serialisation framework. Implementation of Prevayler are available for other technologies as well. As covered in , Prevayler is not a database. On the other hand, it makes users create something akin to an object database. The best part of Prevayler is its high degree of fault tolerance. In numerous tests, Sans Pareil Technologies, Inc. has been unable to cause any data corruption in the data persisted using Prevayler.
Here are some key features of "SPT Object Database":
· Transparently persist complex object graphs. Prevayler requires the developer to de-couple direct references to other persistent objects due to the inherent nature of Java object serialisation. This is obviously entirely contrary to all Object-Oriented principles and is an unjustifiable requirement for application development. This project will transparently handle the de-coupling and reconstitution of the object references thus preserving the purity of the object model.
· Genericised transaction and query objects. Prevayler requires the developer to create distinct transaction and query objects for every type of operation the user wishes to perform against the store. This is a tedious and unnecessary process that may also be avoided by created generic transaction and query objects that may be used under a wide range of operating conditions.
· Automatically index persistent objects by annotating the appropriate fields in the class. Annotations attempt to stay similar to JDO annotations.
· Automatically index fields annotated as searchable using Lucene to support full-text search capability.
· Enforce constraints declared through annotations on the persistent class while managing (adding/updating/deleting) persistent objects.
· Managed relationships. Persistent objects maintain a relationship with other persistent objects when they maintain references to them either directly or in collections. The database engine will ensure that proper actions are taken when a persistent object that is in use by other persistent objects is to be removed from the store.
What's New in This Release: [ read full changelog ]
· This release adds Searchable and Searchables annotations to enable marking prevalent object instance fields as being full-text indexed using Lucene.
· PrevalentManager has added search methods for executing Lucene queries against the search indices.