Features O/R Broker iBatis SQL Maps

Resolves circular references

O/R Broker resolves any circular references, so there's no limitation on object design.

Support for mapping through JavaBeans™ properties

O/R Broker supports mapping of properties, but discourages exclusive use of the JavaBeans™ model due to the negative effects this has on object design.

Support for mapping through constructors

O/R Broker supports instantiation of objects through multi-argument constructors. This allows immutable objects.

Support for mapping through static factory methods

O/R Broker supports instantiation of objects through static factory methods. This is helpful when instantiating objects that either don't have a constructor, or has a certain requirement for factory methods.

Support for mapping through multi-argument methods

O/R Broker supports mapping through arbitrary methods with multiple arguments to ensure consistent object state required by design.

Support for mapping through instance fields

O/R Broker supports mapping directly to instance fields.

Support for mapping through private accessors

O/R Broker supports mapping to private/protected/default fields/methods/constructors. This is recommended when running without a SecurityManager.

Supports individual SQL statement files

O/R Broker supports separation of SQL statements from the configuration file using individual files. This improves readability of the SQL code and reduces configuration file clutter. It also allows for multiple statement definitions, using the same dynamic SQL statement.

Supports Java 1.3 or earlier

O/R Broker requires Java 1.4 or later.

Uses unchecked exceptions

O/R Broker wraps SQLExceptions in problem-specific unchecked exceptions for optional try/catch block and improved code readability.

Has no required third party dependencies

O/R Broker has no external dependencies required to run. For dynamic runtime SQL statements, there's optional support for Velocity or FreeMarker, two commonly used template engines.

Spring Framework integration

O/R Broker integrates easily with the Spring Framework's BeanFactory.

Supports declarative and programmatic transaction isolation levels

O/R Broker allows you to declare a default transaction isolation level, and then override that programmatically when necessary.

Can run without configuration file

O/R Broker can be used without a configuration file for JDBC like behavior, but with the benefit of named parameters. SQL statements can be added dynamically and result objects will be simple Maps. This is only recommended for prototyping and as an easy way to learn the API.

Supports inheritance mapping

O/R Broker supports dynamic mapping of entity inheritance hierarchies to their class counterparts.

Has Savepoints support

O/R Broker has full support for Savepoints.

Has caching support

O/R Broker does not support caching, other than caching per query and transaction, to resolve circular references. This is done to maintain thread safety.

Transparent retry of stale connections

O/R Broker automatically and transparently retries once any commands that throws an exception due to a stale connection. This typically happens when a database is shut down and connections in a connection pool remain logically open, but are physically closed.

Automagic mapping of data types

O/R Broker will automagically map from any JDBC type to any Java type that is supported by JDBC, including using constructor calls.