The Apache DB Project
ObJectRelationalBridge

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

Copyright © 1999-2003, Apache Software Foundation