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.