commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bryan Field-Elliot <>
Subject Simper - Simple Persistence
Date Thu, 10 Jan 2002 00:35:24 GMT
This is a small project which I have been tinkering with on and off for
a few months. Recently, I re-wrote portions of it to be based upon the
new DynaBean.

Simper came out of my rather large experience with EJB -- specifically,
CMP. I thought I could build a framework which provides the important
parts (in my opinion) of EJB/CMP, without all the huge framework. What I
came up with is Simper, which I think packs a good punch terms of
providing the user some real usefulness, and yet comes in at around
1,000 lines of code.

Some highlights:

Design Principles:
	- Should be simple as possible, yet provide real value to coders.
	- Source code should be easily readable and understandable, in its
entirety. No black holes of 100's of classes (e.g. EJB).
	- The bean mechanism should be useful both at the Business Tier level,
and the Presentation Tier level - the same beans, no "copies" or Value
 - Should never grow significantly greater than it's current size (~1000
lines of code); for something more complex, go with Torque or EJB.

Simper is:
	- Simple table encapsulation - just name the table, and DynaBeans will
be created to wrap each row.
	- Automatic transaction demarcation using Servlet 2.3 Filters
	- Automatic change detection (trapping your "set" calls), with changes
written to the DB at the end of the Servlet request automatically
	- Simple means of defining queries, which return single beans or Lists
of beans.
	- Simple means of creating new rows
	- Simple means of deleting rows
	- Tied to JDBC/SQL - does not attempt to abstract away your SQL
	- Don't have to declare specific columns, much less getters and setters
- just name the tables, and Simper will take care of everything
(including database introspection to find all the column names/types)

Simper is not:
	- A comprehensive O/R tool
	- No class generation - everything is wrapped up in DynaBeans
	- Primary Key generation is handled by way of extra round-trip to DB
	- No automatic relationship management (1-1, 1-m, m-m)
	- Support for optimistic concurrency. Some of the plumbing is already
here, but non-functional (versionColumn) 

If this group is interested, I can JAR it up and send it somewhere. It's
not set up as a "standard commons" project with all the various
directories -- I don't want to set all that up until I know there's



  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message