Conserve logo
Conserve is an open source persistence API. It features automatic Object-Relational Mapping (ORM).
Conserve lets you do more with less.


Contents:

Status
Feature requests and bug reports
Download
Documentation
Features
FAQ
Compatibility matrix
Links
License

Status:

Conserve is currently in beta.

Feature requests and bug reports:

Source Forge forums for Conserve. Please submit bug reports here.

Download:

download Download latest.
Browse source code.
Check out latest source version.

Documentation:

Tutorial.
Browse JavaDoc generated documentation.
Download JavaDoc generated documentation.

Features:

  • Search-by-example.
  • Object-oriented search.
  • No SQL knowledge required.
  • Very simple configuration.
  • No annotation required.
  • Inheritance is preserved.
  • Transitive persistence.
  • Instance consistency.
  • Automatic database schema creation.
  • Persist complex objects, i.e. objects that contain Collections, Maps, Sets and arrays, self-referencing objects etc.
  • Eliminates SQL injection.
  • Persist objects without changing your existing code or object model.
  • Handle objects that contain direct and indirect references to themselves.
  • No external dependencies.
  • Database-neutral.
  • ACID compliant.
  • Universal support for CLOB and BLOB datatypes.
  • Small binary size.

FAQ:

Q: Why not use Hibernate?
A: Hibernate requires XML configuration or specialised tags and it does not respect class inheritance relations.

Q: Why not use JPA 2.0 ( JSR 317) which preserves class inheritance relations?
A: JPA is needlessly complex. For example, the user is required to specify if inter-class relations are OneToOne, OneToMany, ManyToOne or ManyToMany using annotations, despite the fact that this informationcan be deduced using introspection on the class definition itself.
Conserve aims to give the user the same power as JPA 2.0 without the complexity.

Q: What is Transitive Persistence?
A: If object A refers to object B and A is persisted, B isautomatically persisted. If a third object, C, also references B and C is persisted, the record of object B is not duplicated. This means thatif you retrieve A and C at a later time, B will be automatically retrieved and A and C will both reference the same object.

Q: What is Instance Consistency?
A: Objects are not retrieved from storage if they are already in memory, instead a reference to the existing object is returned. This prevents the problem where two references to the same database entity are modified separately by application code.

Q: Why is search-by-example a good thing?
A: There are four reasons:
  1. It moves some of the validation checks from run-time to build-time, allowing you to detect and correct a problem earlier.
  2. It allows dynamically building queries without string concatenation.
  3. It makes it difficult for your colleagues to accidentally put in an SQL injection bug.
  4. It is more intuitive than stringing together joins on several tables manually.
Q: Can I still enter raw SQL commands?
A: Yes, we don't encourage it but it is simple to do so, have a look at the ConnectionWrapper.getConnection()method, it lets you access a raw connection.

Q: Why isn't database engine X supported?
A: We're adding support for database engines as fast as we can. If you would like us to add support for a particular DB engine, please drop us a note (if it's an open source DB) or send a message to the manufacturer (if it's a proprietary DB).

Q: Why is database neutrality a good thing?
A: Database neutrality means you can easily switch between different database vendors - just by changing a single line.
This makes it easier to find the optimal database for your application - there's no need to rely on general performance measures and guesswork.
It also means you can easily migrate from one database to another, should your needs change.
Most importantly it means you can forget about implementation-specific SQL variations and dialects.

Q: Can I help?
A: Yes, we're grateful for any help. We welcome graphic designers (we need a logo), web designers, Java programmers, SQL gurus and anyone who wants to make a better, simpler ORM library. See the project page for details.

Compatibility matrix:

Conserve is compatible with the following RDBMS:
Name
Implemented
Planned
Test suite runtime
H2


14s
MySQL


28s 
PostgreSQL


24s
Microsoft SQL Server



Oracle



SQLite


17s
Apache Derby/ SUN Java DB


1m, 57s 
Informix



DB2



MS Access



FireBird

1m, 29s
HSQLDB


37s
Ingres



MaxDB




Links:

Apache Cayenne
BeanKeeper
Carbonado
Comparison of different SQL implementations
EJP
Empire-db
Hibernate
jor
JORM
JPA 1.0
JPA 2.0
jPersist
pBeans 2
Toplink

License:

Conserve is licensed under LGPL v.3.
LGPL3 logo
This means, in practical terms, that you can include Conserve in your commercial application.

Last updated: 2012-05-16

Hosted by:
Get Conserve at SourceForge.net. Fast, secure and Free Open Source software downloads
Support This Project