ExoLab     OpenEJB     OpenJMS     OpenORB     Castor     Tyrex     

Mailing Lists

Using XML
Using JDO
Tips & Tricks
JDO Config
Source generator
XML Schema Support
XML Mapping
Running The Examples

Full JavaDoc
Configuration, Libs, Building
Transactions & Locks
Design: Persistence
Key Generators
Long Transactions
Nested Attributes

Status, Todo


Version 0.8.11 December, 15 2000
Version 0.8.10 November, 29 2000
Version 0.8.9 November, 3 2000
Version 0.8.8 July 20, 2000
Version 0.8.7 June 2, 2000
Version 0.8.6 May 24, 2000
Version 0.8.5 May 12, 2000
Version 0.8.4 May 5, 2000
Version 0.8.3 April 28, 2000
Version 0.8.2 April 7, 2000
Version 0.8.1 April 5, 2000
Version 0.8 March 27, 2000

Version 0.8.11 December, 15 2000

XML:    Updated Schema syntax and some of the Schema Object Model to support 
        the W3C XML Schema Candidate Release. (kvisco)

XML:    Allow the use of uninitialized collection. Castor will instiate a new 
        collection of the proper type when necessary. (seb)

XML:    Added #setResolver method to Marshaller, thanks to George Stewart for
        pointing out to me that I neglected to add this method. (kvisco)

XML:    Changed name of xml element in the mapping.dtd to bind-xml. This change
        won't effect any existing mappings yet, because I've added backward
        compatibility support. (kvisco)

JDO:    For HIGH/LOW key generator the paramater "global" has been added, it gives possibility
        to generate globally unique keys (Oleg Nitz).

JDO:    SAP DB driver, improved support for MySQL (Oleg Nitz)

JDO:    Added possibility to close OQL queries in order to release resources (Oleg Nitz)

Version 0.8.10 November, 29 2000

XML:    Made the collection name in the mapping file NOT case sensitive. (Seb)

XML:	Added new validation flag for the marshalling framework in castor.properties
	Changed the parser validation property to og.exolab.castor.parser.validation

XML:    Added fix to Marshaller#isPrimitive to support BigDecimal, submitted
        by Don Kleppinger. (kvisco)

XML:    Added "-nodesc" flag to source generater to disable generation of
        class descriptors. Suggested by George Stewart. (kvisco)

XML:    Fixed a bug in the unmarshalling of array of primitive type when using mapping.
        (Seb <gignoux@intalio.com>)

XML:    Added feature to castorbuilder.properties to allow specifying a super
        class of generated types (kvisco)

Version 0.8.9 November, 3 2000

JDO:    SEQUENCE key generator for Interbase (contributed by Nic Wise <nicw@xerxes.co.nz>).

JDO:    MySQL driver (contributed by Leonardo Souza Mario Bueno <leonardo@itera.com.br>).

JDO:    Annoying type conversion problems solved:
        - integer SQL type for Oracle now can be used for dependent objects
          identities - before this caused type conversion error;
        - timestamp SQL type can be used with Sybase - before dirty checking
        - Database.load() now accepts identity value of the field type,
          type conversion is performed correctly - before it was needed
          to use the SQL type for Database.load(), but the field type
          for OQLQuery.bind(). (Oleg Nitz)

JDO:    Interbase driver (contributed by Terry Child <tmchild@gmx.net>).

JDO:    Added UUID key generator.
        (contributed by Thomas Fach <thomas.fach@publica.de>)

JDO:    jdoBeforeCreate() callback method has been added to Persistent
        interface. It is called during db.create() just before creating
        object in the persistent storage (Oleg Nitz).

JDO:    InstantDB driver (contributed by I. Burak Ozyurt <bozyurt@san.rr.com>).

JDO:    Replacing of extended object in the cache on load of extending object
        implemented. jdoLoad signature changed. Now in jdoLoad you can request
        reloading the object instance as an instance of an extending class.
        You need some "type" field in the extended class, which determines 
        the correct extending class, see example in
        src\examples\myapp\Product.java. (Oleg Nitz)

JDO:    Now IdentityKeyGenerator works with Hypersonic SQL identities
        (idea by Mark Delanoy <mdelanoy@niku.com>)

JDO:    Fixed bugs (contributed by Bill Reynolds <bill@leastsquares.com>)
        - same OID for parent class instance and subclass instance
          with the same identities causes cache corruption
        - it is possible for a subclassed object to be reported as
          non-persistable even if it has a legal mapping
        - if you're using a class with the identity key generators and
          no member fields, you get bad sql generated

JDO:    Added support for LIMIT clause in OQL queries, currently for
        PostrgeSQL only (contributed by Alexey Snisarenko <alex@plesk.com>)

JDO:    Added JDO.setClassLoader(). (Oleg Nitz <on@ibis.odessa.ua>)

JDO:    Fixed problem with Float/BigDecimal and Double/BigDecimal
        type conversions. (Oleg Nitz <on@ibis.odessa.ua>)

JDO:    Implemented algorithm of "bounded" dirty checking for long
        transactions, it uses local timestamps and is works only
        if the object is still in the cache at the end of the transaction.
        See interface TimeStampable and Database.update().
        (Oleg Nitz <on@ibis.odessa.ua>)

JDO:    Changed HIGH/LOW key generator implementation: now holds lock
        on the record in the sequence table until the end of the transaction
        and doesn't use updatable ResultSets. (Oleg Nitz <on@ibis.odessa.ua>)
        Fixed a gap in HIGH/LOW key generator implementation: with databases
        that don't support "SELECT FOR UPDATE" (like Hypersonic SQL and
        InstantDB) it was possible to get the same key values in two concurrent
        transactions (Reported by George Stewart <georgestewartiv@yahoo.com>)
        Now works in a separate connection, and commits changes to the sequence
        table immediately.

JDO:    Temporary fix to ClassLoader problem in EJB environment: application
        classes are loaded using context classloader of the current thread.
        (Oleg Nitz <on@ibis.odessa.ua>)

Misc:   JDK 1.1 compatibility is back. (Oleg Nitz <on@ibis.odessa.ua>)

XML:    Support for Bound Properties

XML:    Added support for Pattern Facet 
         - currently works for string, integer, and long 

XML:    Updated the Schema Object model to support the new Grouping syntax
        - Groups are still not supported by the source code generator.

XML:    Updated Unmarshaller to support "empty" strings (kvisco)

XML:    Added support for direct public field access for the Marshalling 
        Framework when no accessor methods exist. (kvisco)

XML:    Fixed Marshaller#setMarshalAsDocument so that XML fragment marshalling
        works again. This used to work, but changes to the serializers had 
        prevented this from working properly. Reported by Phil Grida. (kvisco)

XML:    Fixed endless recursion bug when processing recursive element 
        declarations, reported by Chris Schaefer (kvisco).

XML:    Added George Stewarts changes to give mappings higher priority than
        generated descriptors

XML:    Added Patrick Higgins changes to the javasource package to fix
        support for abstract methods (kvisco)

XML:    Added support for in-lines SimpleTypes (anonymous) for 
        attribute declarations (kvisco)

XML:    Added support for in-lined SimpleTypes (anonymous) for 
        element declarations. (kvisco)

XML:    Added Luis Arias upgrade for the maxOccurs attribute of elements
        for the April xML Schema draft (kvisco)

XML:    Added support for top-level annotations (kvisco)

XML:    Made some changes in Unmarshalling code to handle "null" primitives. 
    Based on suggestions from Fabrice Gomez. (kvisco)

XML:    Fixed a bug when Unmarshalling/Marshalling primitive Object wrappers 
    using dynamic-introspection. (kvisco)

XML:    Changed some case-sensitive issues with the below mentioned Schema
        syntax upgrade (kvisco)

XML:    Update of the XML Schema syntax to the April 7th draft
           (Remy Maucherat <remm@apache.org>)

        The following things in the April draft are supported :
          - datatype -> simpleType
          - type -> complexType
          - the "source" attribute has been replaced by "base"
          - the "fixed" attribute in an attribute element now is
            part of the "use" attribute
          - the "default" attribute, which is used to specify the default
            value of an attribute, now is "value"
          - the "minOccurs" attribute of an attribute element has been removed,
            the attribute "use" has to be used instead. "use" can have the
            following values : default, optional, required, fixed and
          - Info element is now Documentation
          - maxOccurs = "*" is replaced by maxOccurs="unbounded"
            (Andrew Fawcett)

XML:    Java 2 types compatibility (Patrick Higgins)

XML:    <include> element support (Andrew Fawcett)

XML:    decimal type support (Andrew Fawcett)

XML:    Support xsi:type from XML Schema for Instances 
    (Remy Maucherat <remm@apache.org>)

Version 0.8.8 July 20, 2000

XML:     Added support for the Unmarshaller to automatically determine the Class of the
         root element, based on a given Mapping, or ClassDescriptorResolver

XML:     Added support for the "has" method for primitives in the generated source

XML:     Added support for specifying the destination output directory for the
         generated source code

XML:     Added support for fixed attributes, this currently works for string
         or integer values

JDO:     Fixed bug: NULL value in database was read as 0 for Java wrappers
         of primitive types (Long, Integer, etc.), now they are read as "null".
         (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Changed the inner SELECT syntax in MaxKeyGenerator to make it work
         with Hypersonic SQL.
         (Contributed by Santiago Arriaga <santiago@catnet.com.mx>)

JDO:     Hypersonic SQL driver.
         (Contributed by Santiago Arriaga <santiago.arriaga@catnet.com.mx>)

JDO:     Changed KeyGeneratorFactory interface for better perfomance:
         now the target primary key SQL type is passed to the key generator,
         and no type conversions are performed after the key is generated.
         (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Added support for attributes of application type and for nested
         attributes. Assume that you have an attribute "balance" of
         applicatation type "Balance" which has methods "getBigDecimal"
         and "setBigDecimal", then you can write in mapping.xml
           <field name="balance.bigDecimal"...
         and Castor will get and set the attribute value as
         getBalance().getBigDecimal() and getBalance().setBigDecimal(value).
         Note, that getBalance() may be null, in this case when setting
         a non-null value Castor will first do setBalance(new Balance()), 
         and then getBalance().setBigDecimal(value).
         Another example of usage of the this feature is attribute "address"
         with nested attributes "country", "zipCode", etc.
         These attributes also may be of application type or nested, e.g.
           <field name="address.country.string"...
         (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Small fix: now fields in mapping.xml may have no "sql" sub-element,
         e.g. the field may be only for XML marshalling, other fields
         may be persisted through JDO. (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     "CALL" OQL queries now work with Oracle stored functions
         returning REF CURSOR (Oleg Nitz <on@ibis.odessa.ua>)
         and PostgreSQL stored functions returning instance
         (contributed by Rostislav Beloff <ros@domainforfree.com>)

JDO:     Added type convertors BigDecimal <-> Boolean
         (contributed by Markus Fritz <mfritz@justis.de>)

JDO:     Fixes multiple request of same object with DBLocked
     (Oleg Nitz and Markus Fritz)

JDO:     Changes to Persistent interface enable developer to use database 
     operations inside jdoStore, jdoCreate, jdoRemove.
     (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Cache control at JDO configuration and mapping file specification - 
     no-cache option, cache count limit, cache time limit, LRU removal 
     deamon (Thomas Yip <yip@intalio.com>)

JDO:     Bug fix: for created objects fetch() returned oid instead of object 
     (contributed by Chris Stevenson <chris@ssabsa.sa.gov.au>)

JDO:     SQL Date types handling is improved.
     (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Bug fix: small bugs w/ BETWEEN in parser...reported by Vladmir Sekissov.

JDO:     fix string conversion to surround with ' and escape internal ' fix for 
     bug with like. (<nissim@panix.com>)

Version 0.8.7 June 2, 2000

JDO:     Informix JDBC driver. (Contributed by Santiago Arriaga

JDO:     SEQUENCE key generator now works with Oracle. It has a special 
         RETURNING mode for Oracle8i which is more efficient because 
         obtains the identity during INSERT, without any additional SQL queries.
         (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Added three paramaterized type convertors: Date<->Integer,
         Date<->BigDecimal and Date<->String. The latter uses the SimpleDateFormat
         patterns (e.g. char[MMM d, yyyy]). The others uses similar
         but shortened patterns (e.g. numeric[YMDhmsS], which is equivalent
         to "yyyyMMddhhmmssSSS" SimpleDateFormat pattern).
         (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Fixes to handling of dependent objects create/delete/modify during
         transaction commit. (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Added convertor from byte to short/integer. (Contributed by Harindranath P. R. Nair

XML:     Identity field will now use XML name provided in mapping file.

XML:     Marshaller will now accept both primitive and non-primitive types and apply the
         proper conversion; no dropped in convertor used, so Date/byte conversion should
         work as expected; added test case for type handling of XML. (Bug reported by
         Eitan Suez <eitan@uptodata.com>)

Misc:    Fixed security bug when running as an Applet. (Reported by Remus Pereni

Misc:    Added support for Java 1.2 Collection by running the source generator with the
         option '-types j2'. Vectors are used with 'j1' and ODMG 3.0 DArray with 'odmg'.

Version 0.8.6 May 24, 2000

XML:     Added support in the Marshaller to specify whether or not to marshal
         as an XML document, or just an XML fragment (default). Currently
         the only difference is the XML declaration is printed when marshalling
         as a document. I will add support for specifying the DOCTYPE. Of course
         since a SAX 1.0 DocumentHandler doesn't allow this, DOCTYPE and
         XML declarations will only be printed when a Writer is used.

XML:     Added support in the unmarshaller for better inheritence checking.
         If a FieldDescriptor is not found for an element, an attempt to
         obtain ClassDescriptor will occur for the given element. If found,
         another check will be performed to find a FieldDescriptor that
         describes a field which is a superclass of type described by the
         class descriptor. (see src/tests/xml/Inheritence.java)

JDO:     Added support for paramaterized type convertors. Currently supported is boolean
         to char convertor using T/F character values (e.g. char.01 or char.TF). More
         convertors and parameter specification will be added in 0.8.7. (Oleg Nitz

JDO:     Fixed bug when related object is null and SQL_OTHER type is passed to JDBC
         driver; now properly passes type of identity field. (Reported by
         Eitan Suez <eitan@uptodata.com>).

JDO:     Fixed bug with dirty checking that caused lock to not be acquired and object
         to be deleted if modified, and now properly reporting modified value of object.

JDO:     Fixed the way in which null fields are handled, so has/delete methods are called
         if available, default value is used otherwise, setNull/wasNull are used on the
         JDBC record.

JDO:     Changed callback sequence. jdoRemove is now called on deleted objects,
         unsetDatabase on objects that become transient (including those removes).
         setDatabase is called whenever the object becomes persistent (that is,
         used in a transaction) and passes the database to support lazy loading.

JDO:     Fixed SQLTypes to pick up proper SQL type form field of type java.util.Date.
         Fixed SQLEngine to use SQL type in some calls to setObject.
         (Contributed by Donald Ball <balld@webslingerz.com>)

JDO:     Added quoting to column and table names to support white spaces and keywords
         (Only Postgres, Sybase and SQL Server).

Mapping: Added a match attribute for the xml element, this is used for allowing
         better inheritence support. Setting this match attribute will restrict,
         or extend the xml names matched by a given XMLFieldDescriptor.

Mapping: Added resetValue() method to field handler. This generally resets a field to
         it's default value or empties a collection field.

Mapping: Date type no longer defaults to new date() when field is null, field is no
         longer set to default when null. (Reported by Lincoln Spiteri

Mapping: Fixed mapping loader to complain if get/set methods are not found. Both are
         required to be present, unless a collection field is used which only requires
         a get method. (Reported by Lincoln Spiteri <Lincoln.Spiteri@mobisle.com>)

Mapping: Added convertor between String and character. (Reported by Donald Ball

Mapping: To fix problem with compiled class descriptors for XML and mapping file for
         JDO not working together, mapping loading will not attempt to load class
         descriptors. A permanent fix will be included in 0.9 or 1.0.
         (Patiently reported by Andrew Ikon <aikon@niku.com>).

Mapping: Fixed collection handler to work with arrays of any object type (e.g. strings).

Version 0.8.5 May 12, 2000

JDO:     Remove enumerate collection type. Only get method is required to support
         java.util collections, get/set methods to support arrays. Extended the
         CollectionHandler interface with size() method to assist in validation.

JDO:     Revised the CacheEngine towards dependency support, adding FIFO list to
         determine order of object removal, simplifying the prepare stage. Objects
         will now be removed from the database in the same order they were removed
         by calling Database.remove().

JDO:     Fixes to outer query expressions:
         - JDBCQueryExpression fixed and tested with Access (Christopher
           Elkins <celkins@scardini.com>)
         - OracleQueryExpression fixed not tested with Oracle
           (Sebastien Sahuc <ssahuc@imediation.com>)

JDO:     Now using new OQL parser by default. Added support for is_defined/
         is_undefined (IS NULL), BETWEEN and DISTINCT. (Nissim

JDO:     Added convertor between java.sql.Date and java.util.Date
         (reported by <Lincoln.Spiteri@mobisle.com>).

JDO:     Improved type convertion for key generators. MAX key generator now
         should work with PostgreSQL. (Oleg Nitz <on@ibis.odessa.ua>)

JDO:     Added support for stored procedures in OQLQuery. Now it is possible to
         create queries of the form "CALL sp_something($) AS myapp.Product",
         where sp_something is a stored procedure returning one or more
         ResultSets with the same sequence of fields as Castor-generated SELECT
         for the OQL query "SELECT p FROM myapp.Product p" (for objects without
         relations the sequence is: identity, then all other fields in the same
         order as in mapping.xml). (Oleg Nitz <on@ibis.odessa.ua>)

XML:     Support for ODMG 3.0 DArray collection in the XML source code generator.
         When running the source code generator with the FieldInfoFactoryODMG30
         collection fields will use org.odmg.DArray as the collection type for
         interoperability with OODBMS using the ODMG 3.0.
         (Contributed by Frank Thelen <frank.thelen@poet.de>)

XML:     Added some namespace support to the XML Schema reader. It currently doesn't
         properly handle namespace scoping as you go down the tree, so if you are
         changing your namespace declarations for some reason on sub-elements it
         probably won't work properly and you'll need to wait until Monday when I
         finish it up.

XML:     Fixed problem when using attributes that are of enumerated datatypes,
         the types subpackage was not getting imported (reported by markd@lutris.com)

XML:     Fixed problem when using enumerated datatypes with enumeration values
         that contained Java keywords (reported by markd@lutris.com)

Misc:    Support for Java 1.2 collections: Collection, Set, Map. Requires Java 1.2
         to compile, but using reflection can be made to work on Java 1.1.

Version 0.8.4 May 5, 2000

XML:     Fixed a ClassLoader issue with the ClassDescriptorResolver

XML:     Added validation back into the generator sources

XML:     Added some changes from Frank Thelen to allow subclassing FieldInfoFactory

XML:     Fixed bug that occured when an enumeration uses uppercase values

XML:     Fixed bug with using datatype

JDO:     Where clause now supports:
         - unary operators: +, -, abs, not
         - binary operators: +, -, *, /, mod, ||, LIKE, >, >=, <, <=, =, !=, and,
         - parenthesis: passed through to SQL as in OQL
         - numbered parameters including user specified type support
         (Nissim <nissim@panix.com>)

JDO:     Fixed bug in Database when used as sychronized resource in a J2EE environment.
         Calling close() will not rollback the transaction until the J2EE server has
         completed two-phase commit and notified it. Database must be registerd with
         a JTA transaction manager using the setTransactionManager option.

JDO:     Fixed bug in key generator when using non-primitive value (e.g. Integer, String).
         Previously SQLEngine create was never called, now it is called and object properly
         recorded in transaction.

Mapping: Fixed bug that caused exception with inheritance, now inheritance works
         correctly if classes are specified in proper order in the mapping file.
         (Oleg Nitz <on@ibis.odessa.ua>)

Tests:   Updated test cases, now includes test cases for key generators.
         (Oleg Nitz <on@ibis.odessa.ua>, Arkin <arkin@exoffice.com>)

Version 0.8.3 April 28, 2000

JDO:     New OQL query engine. Not used by default, see new methods in OQLQueryImpl
         and package org.exolab.castor.jdo.oql.

JDO:     Added support for null fields by calling the relevant setNull() method
         when setting a null field. Does not apply to query parameters yet, does
         not apply to identity fields.

JDO:     Added key generators support. Implemented four algorithms:
         "MAX" - generic "MAX(pk) + 1" algorithm;
         "HIGH/LOW" - generic "HIGH/LOW" algorithm (extendible);
         "IDENTITY" - "SELECT @@identity" for Sybase and SQL Server;
         "SEQUENCE" - "SELECT nextval('..._seq')" for Oracle and PosgreSQL;

JDO:     Added package org.exolab.castor.jdo.drivers which includes RDBMS specific
         factories, query expressions and key generators. Added factories for DB2,
         and SQL Server.

Misc:    Added support for hasXXX()/deleteXXX() methods to determine if a value
         exists when the value is a primitive (thus, cannot be null). Used by both
         JDO and XML.

Misc:    Fixed null pointer exception with collection handler. Deprecated
         checkValidity on field handler (new validation code from XML will come

JDO:     Added and tested outer joins.

Persist: Added getIdentity() method to TransactionContext().

Misc:    Modified the test harness to run from an XML test file. Added test case
         for type handling (only null fields at the moment) and outer joins.

Version 0.8.2 April 7, 2000

JDO:     Added experimental update() method to Database interface.

JDO:     Fixed some minor glitches in support for exclusive and db-locked
         access, documented the available access modes.

JDO:     Fixed synchronization support, disabled checkpoint method.
         Fixed bugs in handling of default field values.

JDO:     Fixed circular exception problem in ObjectLock.release.
         (Contributed by Jason Weistein <jasonw@reticular.com>)

Misc:    Documented the locking options in Castor and concurrency support.
         Added the three locking mode to all the test cases.

Version 0.8.1 April 5, 2000

XML:     Fixed long->object conversion which suffered from a cut and paste bug
         from the integer type.

XML:     Added back inheritence support inside XMLClassDescriptor,
         which was in MarshalInfo, but removed during the upgrade.

XML:     Fixed bug with creating default XML name in XMLClassDescriptorImpl

XML:     Fixed bug with unmarshalling primitive String types.
            -- reported by Remy Maucherat and Kevin Burton

XML:     Fixed bug with namespace support during marshalling of primitive
         and immutable types

XML:     Added back namespace support, which was temporarily removed during
         the upgrade

JDO:     Added Locked mode to provide locking at the database level, as
         opposed to Exclusive mode which provides locking at the cache
         level. Added support for loading/querying with a given access mode.

JDO:     Improved concurrency for shared mode by eliminating write locks when
         modified field is not marked as dirty.

JDO:     Added isOpen method to database. Deprecated checkpoint.

JDO:     Added preliminary support for controlling cache size and removing
         objects from cache.

JDO:     Fixed bug in bind( String) method of OQLQuery.

JDO:     Fixed bug with modified exception not removing copy from cache.

JDO:     Fixed bug with reusing queries.

Misc:    Upgraded test cases to run inside JTF as a test harness.

Version 0.8 March 27, 2000

XML:     support for IDREF/ID has been added back in

XML:     fixed circular reference bug
           -  This was an indirect bug caused by a bug
              in org.exolab.castor.util.Stack

XML:     fixed bug in method naming when type is "ID"

XML:     Updated the Source code generator to work with new Framework
         - Note I currently removed validation support, this will be
           back ASAP
         - There is a known bug with using "binary" type...I'll have
           this fixed ASAP also

XML:     We are now one step closer to using the mapping files with
         Castor XML. A lot of changes have gone into sharing the "descriptor"
         framework between Castor XML and Castor JDO...I can't enumerate all
         the changes in this log, but here are a few:

         - MarshalInfo and MarshalDescriptor have been changed to
           XMLClassDescriptor, and XMLFieldDescriptor respectively, and the
           interfaces have changed so be careful
         - We added the XMLFieldHandler
         - Changed MarshalInfoResolver to ClassDescriptorResolver

JDO:     Placed the ODMG API in the org.exolab.castor.jdo package,
         to be included in the JavaDocs and to enable the introduction
         of Castor (RDBMS) specific features.

JDO:     Moved transaction handling into the Database interface, queries
         are now created from the Database object, JDO servers at the
         implementation factory.

JDO:     Added preliminary support for many-many relations, improved
         support for one-many relations, fixed bug in isModified with

JDO:     Added support for pluggable SQL engines (PersistenceFactory),
         listed in the Castor properties file and referenced from the
         JDO configuration file, allowing each database configuration
         file to select the most suitable engine.

JDO:     Extended JDO configuration file to include engine name, plus
         minor modifications to element and attribute names in DTD/Schema,
         and documentation of the configuration file.

JDO:     Upgraded to use QueryExpression to construct SQL query statements
         in database specific syntax.

JDO:     Implemented dirty checking on objects loaded with a shared lock.
     Dirty checking performed on fields within UPDATE statement requiring
     a single SQL operation to update/check dirtyness.

SPI:     Added QueryExpression and KeyGenerator to the SPI. QueryExpression
         is generated from PersistenceFactory. Added way to load factories
         from the Castor properties file.

Persist: No longer supports identity changes.

Persist: Rollback of transaction no longer reverts object to their previous
         state due to lock race condition that hampers efficiency. Eliminating
         this feature improves concurrency with optimistic locks.

Misc:    Documentation distribution includes API JavaDocs and JavaDocs for
         all Java classes. Tarball/zip include just the API JavaDocs.
         Web site has been revised accordingly and some links moved around.

Misc:    Updated build.xml file now includes documentation in tarball and
         zip, builds both API JavaDocs and all classes JavaDocs, and does
         not include package.html files in JARs.

Copyright © 2000 ExoLab Group. All rights reserved.
Java, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. XML, XML Schema, XSLT and related standards are trademarks or registered trademarks of MIT, INRIA, Keio or others, and a product of the World Wide Web Consortium. All other product names mentioned herein are trademarks of their respective owners.