OJB
Downloads
Documentation
Development
Translated (Web)
|
Features |
-
The PersistenceBroker allows Java Programmers to store and retrieve Java
Objects in/from JDBC-compliant RDBMS
-
Transparent persistence: Persistent classes don't have to inherit from a
persistent base class or to implement an interface.
-
Persistence by reachability: All Objects associated to a persistent object
by references are made persitent too.
- Mapping support for 1:1, 1:n and m:n
associations.
- Configurable collection queries to control loading of relationships. See QueryCustomizer.
- Automatic assignment of foreign key values.
-
The Object / Relational mapping is defined in an XML Repository. The
mapping is completely dynamic and can be manipulated at runtime for
maximum flexibility
- Classes can be mapped to an arbitrary number of JDBC datasources.
- The Broker uses an internal ObjectCache which
-
maintains object identity (multiple lookups on a given table with same
primary key will return one and the same object !)
- reduces read and write overhead against databases
- prevents circular reads in object read phase
-
is fully garbage collectable through usage of soft references (if
objects are referenced by the ObjectCache but not from any
Client-Application they can be reclaimed by the garbage collector)
-
The CacheMechanism is pluggable and can be easily replaced with
user-defined implementations. There are also some predefined
implementations available.
-
Provides a cache synchronization mechanism to avoid data corruption
when using multiple OJB servers.
-
Configurable Lazy Materialization through Proxy support in the
PersistenceBroker. The user can implement specific Proxy classes or let
OJB generate dynamic Proxies.
-
Support for Polymorphism and ODMG Extents.
You can use Interface-types and
abstract classes as attribute types in your persistent classes. Queries
are also aware of extents: A query against a baseclass or interface will
return matches from derived classes, even if they are mapped to different
DB-tables
-
Support for Java Array- and Collection-attributes in persistent classes.
The attribute-types can be Arrays, java.util.Collection or may be user
defined collections that implement the interface
ojb.broker.ManageableCollection.
-
Sequence-Managing. The SequenceManager is aware of extents
and maintains uniqueness of ids accross any number of tables.
Sequence Numbering can be declared in the mappping repository.
Native Database Sequence Numbering is also supported.
- Reusing Prepared Statements, internal connection pooling.
-
Integrates smoothly in controlled environments like EJB containers
(wrt. SecurityManagers and JNDI based Datasources).
-
Full JTA and JCA Integration.
-
Support for prefetched relationships
to minimize the number of queries.
-
ODMG compliant API, a Tutorial, and TestCases are included.
Important notes:
-
OQL is currently not fully implemented.
(Aggregations and Method Invocations)
-
ODMG implicit locking is partly implemented but does
currently not maintain transaction isolation
properly. To achieve safe transaction isolation client application
must use explicit lock acquisition.
-
JDO 1.0.1 compliant API, a Tutorial, and TestCases are included.
-
Scalable architecture that allows to build
massively distributed and clustered systems.
-
Distributed Lockmanagement supporting four pessimistic
Transaction Isolation Levels (uncommited or "dirty" reads,
commited reads, repeatable reads, serializable transactions).
-
Optimistic locking support. Users may declare int or long
fields as version attributes or java.sql.Timestamp fields as
timestamp attributes.
- Cache synchronisation for distributed caches.
-
Comes along with fully functional demo applications running against
HSQLDB.
-
Quality assurance taken seriously: More than 500 JUnit-TestCases for
regression tests. JUnit tests integrated into the build scripts.
- Provides Log4J logging facilities.
- 100 %: pure Java, Open Source, Apache License
|
|