Features
An easy-to-use transparent persistence layer over a JDBC
relational database. The programmer can define
table rows to be extensible Java objects, without having to
write any more code than she would for an equivalent non-persistent
object.
Implicit permissions checks on accesses to persistent
objects (table rows), based on a flexible and efficient
user/group/capability
authentication system.
A self-trimming, (LRU/1), cache of persistent objects such that available memory
is efficiently used but reclaimed when needed by the JVM. Thsi ensures that databse accesses
are reduced to a minimum.
Support for transactions,
either explicitly or transparently, with a simple default pattern
appropriate for servicing typical HTTP requests; and behind that, of
course, `connection pooling'.
Transparent (and transaction-safe) cacheing of rows
from the most intensively used tables, such as lookups or localisation phrases.
Convenient and flexible templating
of persistent objects.
CSV utilities to initialise a database from CSV files.
A comprehensive administration
system, supporting the following operations on any Melati
database without requiring configuration:
list records in a table matching a template
add/edit/delete records
list records linked to (or linking to) a record
change the capabilities required to read/write a record
add/delete tables and fields
upload files
cascading deletes
Javascript form validation
Javascript client side tree browsing
Code for a generic
Messageboard System,
a generic Shopping Trolley
and a CMS are also available.
For a detailed exposition of Melati see William's post to the OCAML list.