Butterfly Persistence aims at providing a simple relational persistence API.
The features includes:
- Automatic / manual connection management
- Easier JDBC operations via JDBC templates (Spring style)
- Simple object relational mapping
- Map reading for dynamic queries
The users normally emphasize the simple and pragmatic approach to persistence
as their main reason for choosing Butterfly Persistence. Butterfly Persistence will either help you, or
get out of the way and let you do the job manually.
Butterfly Persistence's abstraction layers are shown below. Each of these layers are optional,
meaning you can bypass them if you don't need them (see the text Optional Abstractions
for a more detailed explanation).
If you cannot see the diagram above, your browser cannot display SVG diagrams.
If you are using Internet Explorer, you should install the
Adobe SVG Reader Plugin.
Firefox 3.0.5+ and Chrome users should be fine without this plugin.
Derived from Mr Persister 4.0.0
Butterfly Persistence is a cleaned up version of Mr Persister 4.0.0.
As such Butterfly Persistence
is not a new API. It has alread proven itself through years of use in production environments, and has been downloaded
thousands of times.
had more peripheral features (connection pooling, transaction handling etc.) than Butterfly Persistence has today. These features
will be added if they provide value. If not, alternative solutions will
Before you start using Butterfly Persistence in a new project, read this:
The correctness of the features in Butterfly Persistence depends on the JDBC standard, and on the individual
databases and JDBC drivers. Not all databases support all features, and not all JDBC drivers fully implement
the JDBC specification.
Since I do not make any money at all from any of the Butterfly components, I cannot justify spending all
that time keeping up with both JDBC, databases and drivers. Therefore Butterfly Persistence moves very slowly.
What is here works, but new features are added only slowly.
The same is not the case with the rest of the Butterfly components. Most of the other components have no
external dependencies, so once they reach maturity, they stay stable.
To get started see the documentation and download pages.
Butterfly Persistence features include:
| ||Automatic connection management - Butterfly Persistence opens connections|
| ||Manual connection management - you open connections|
| ||Full access to connection at any time|
|JDBC Support / Utilities|
| ||Read utilities make reading from DB very simple.|
| ||Update utilities make updating DB very simple.|
| ||PreparedStatement utilities eases the parameterization of SQL queries.|
| ||ResultSet iteration utilities eases iteration and closing of ResultSet's|
|Map Reading Utilities|
| ||Read any SQL query into a Map for use in complex views or dynamic reports.|
|Object Relational Mapping (ORM)|
| ||Read / Insert / Update / Delete objects in just 1-3 lines of code.|
| ||Automatic object to table mapping.
| ||Annotation based object to table mapping.
| ||Programmatic object to table mapping.|
| ||Mapping methods can be combined.|
| ||SQL as query language.|
| ||Automatic SQL generation for most trivial tasks.|
| ||Batch updates of multiple objects.|
| ||Compound primary key support.|
| ||Partial object reading and writing.|
| ||Read Filters.|
|Ease of Use|
| ||No config files required.|
| ||No new query language (just plain SQL)|
| ||Easy interleaving of custom JDBC with Butterfly Persistences utilities|
|Stability, Maturity & Performance|
| ||Less than 5% overhead compared to JDBC (Much less than Hibernate)|
| ||Well Tested. 313 unit tests were executed against each supported database.|
| ||First stable release was august 2004.|
Back to Top