<?xml version="1.0"?>

<document>

  <properties>
    <title>Melati - Java SQL Website Development Engine</title>
    <author email="timp@paneris.org">Tim Pizey</author>
    <keywords>
      Persistence, Java, SQL, Database, Templates, Object Relational Mapping,
      Objects, Object Oriented, J2EE replacement
    </keywords>
  </properties>

  <body>


<!--
<p align=center>
 <font size=-1><i>
This page last updated: $Date: 2009/02/01 22:46:05 $ $Author: timp $
 </i></font>
</p>
-->
  
<!-- menu -->

<section name=" Features ">


<UL>
  <LI> An easy-to-use transparent <B>persistence layer</B> over a JDBC
       relational database.  The programmer can <A
       HREF="doc/FunctionalSpecification.html#data-def">define</A>
       table rows to be extensible Java objects, without having to
       write any more code than she would for an equivalent non-persistent
       object.
  </LI>
  <LI> Implicit <B>permissions checks</B> on accesses to persistent
       objects (table rows), based on a flexible and efficient
       user/group/capability
       <A HREF="doc/FunctionalSpecification.html#access">authentication system</A>.

  </LI>
  <LI>
       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.
  </LI>
  <LI> Support for <A
       HREF="doc/FunctionalSpecification.html#transactions"><B>transactions</B></A>,
       either explicitly or transparently, with a simple default pattern
       appropriate for servicing typical HTTP requests; and behind that, of
       course, `connection pooling'.

  </LI>
  <LI> Transparent (and transaction-safe) <A
       HREF="doc/FunctionalSpecification.html#cacheing"><B>cacheing</B></A> of rows 
       from the most intensively used tables, such as lookups or localisation phrases.

  </LI>
  <LI> Convenient and flexible <A
       HREF="doc/FunctionalSpecification.html#templating"><B>templating</B></A> 
       of persistent objects.

  </LI>
  <LI> CSV utilities to initialise a database from CSV files.

  </LI>
  <LI> A comprehensive <A
       HREF="/melati-webapp/org.melati.admin.Admin/contacts/Main"><B>administration
       system</B></A>, supporting the following operations on any Melati
       database without requiring configuration:

       <UL>
	 <LI> list records in a table matching a template </LI>
	 <LI> add/edit/delete records </LI>
	 <LI> list records linked to (or linking to) a record </LI>
         <LI> change the capabilities required to read/write a record </LI>
	 <LI> add/delete tables and fields </LI>
	 <LI> upload files </LI>
	 <LI> cascading deletes </LI>
         <LI> Javascript form validation </LI>
         <LI> Javascript client side tree browsing </LI>
       </UL>
  </LI>
</UL>
<p>
  Code for a generic 
  <A HREF="http://boards.paneris.net/">Messageboard System</A>, 
  a generic <A HREF="http://shopping.paneris.net/">Shopping Trolley</A> 
  and a <A HREF="http://paneris.net/site/">CMS</A> are also available.
</p>
<p>
For a detailed exposition of Melati see <a href="http://caml.inria.fr/pub/ml-archives/caml-list/2001/07/42ab620c33c8755f9fea1a4ea8814063.en.html">William's post to the OCAML list</a>.
</p>
<!--P>
  For a comparison of Melati with J2EE see 
  <A href="http://www.geocrawler.com/lists/3/SourceForge/6358/0/6594474/">
  MylesC's post to melati-developers</A>.
</P -->
</section>
</body>
</document>



