Class Notes 2020
Class Notes 2020
========================================================================
ObJectRelationalBridge -- Bridging Java Objects and Relational Databases
========================================================================
Please refer to our issue tracker for more details on issues with id [OJB-xxx]
http://issues.apache.org/jira/browse/OJB
---------------------------------------------------------------------
Release 1.0.4
---------------------------------------------------------------------
NEW FEATURES:
* Support for embedded & network Derby (only distinct count queries don't work yet)
* Added ability to prepare the database for OJB's unit tests via DdlUtils (instead
of Torque)
Note that this is required when running the tests against Derby
* [OJB-10] - Configurable Proxy generation (including CGLIB based generation)
* [OJB-31] - Configurable JDBC driver-setting setFetchSize
* [OJB-14] - Setting custom JDBC driver tuning options trough jdbc-connection-
descriptor
* [OJB-6] - Support for stored procedures returning ResultSet.
* [OJB-41] - ODMG-api: Allow cascading delete using auto-delete setting in metadata
* [OJB-66] - Allow to specify a sequence start element for
SequenceManagerNextValImpl.
Fixed for Oracle, PostgreSQL, MaxDB/SapDB, DB2. Additionally sequence properties
like 'increment by', 'cache', 'order',... are supported too. See 'sequence
manger'
guide and javadoc
* Add new ODMG extensions and configuration properties. All properties can be set
at runtime as global property in class ImplementationExt and for a specific
transaction in class TransactionExt:
- 'ordering' Allow to dis-/enable OJB's object ordering on transaction commit
- 'implicitLocking' Dis-/enable OJB's implicit locking
* Add new property 'TxCheck' in OJB.properties file. When enabled, on PB store and
delete calls OJB checks for a running PB-tx, if not found an error is logged in
order to
avoid store/delete calls without a running PB-tx (while development).
NOTES:
* Internal OJB class configuration files are changed, don't forget to replace
these files on upgrade from older version (by default the internal used
classes are located in repository_internal.xml).
* Improved performance comparison tests ('ant perf-test' and 'ant performance').
Now the tests more fair for registered API's
* In order to facilitate [OJB-10] the constructor signature of VirtualProxy has
been changed.
CHANGES:
* INTERNAL API CHANGES:
Pluggable class interfaces changed to support and fix OJB-31, OJB-6, OJB-63:
- StatementsForClassIF
- StatementManagerIF
- Platform
- RowReader
- SqlGenerator
* Configurable ProxyFactory is now available. Both JDK-based (default) and CGLIB
are provided. CGLIB-based generation allows for proxies to be generated for all
persistent classes, and not just ones that implement an interface.
* Change in behavior of property 'useAutoCommit="1"' in jdbc-connection-descriptor
detailed info can be found in reference guide of the repository file
* ConnectionFactoryManagedImpl is declared deprecated. Now OJB automatic detect the
running JTA-transaction and suppress critical method calls on the used connection
* Removed deprecated SequenceManager implementation SequenceManagerMySQLImpl
* Remove unused method #setReferenceFKs from SequenceManager interface
* ODMG-api: Method behavior of ImplementationImpl#setImplicitLocking(boolean)
changed.
Now this method set the global property for 'implicitLocking'. Old version only
changed the
implicit locking behavior for the current used transaction, this is moved to
TransactionExt#setImplicitLocking
* Internal used OJB_HL_SEQ table changed. Remove of deprecated column.
If the SequenceManagerHighLowImpl was used and problems occur after upgrade,
please
drop and recreate this table without removed column
* Cleanup naming of 'PersistentField' implementation classes: Remove deprecated
classes, rename
implementation classes, declare all ...ImplNew classes as deprecated.
See OJB.properties file.
* Upgraded ANTLR to v2.7.5 (OQL and JDOQL parser classes have been re-generated)
* Upgraded commons-dbcp to v1.2.1
* Upgraded commons-pool to v1.2
* Upgraded commons-beanutils to v1.7
* Upgraded commons-logging to v1.0.4
* Upgraded commons-collections to v3.1
* Upgraded hsql to v1.8.0.2
* Upgraded Torque to v3.1.1
BUG FIXES:
* [OJB-18] - ODMG ordering problem with circular/bidirectional 1:1 references
* [OJB-25] - Inheritance (each subclass on separate table) PK problem with
nextval SequenceManager
* [OJB-26] - JDBC-ODBC bridge problem
* [OJB-27] - [ODMG] Foreign key violation
* [OJB-29] - Infinite loop in case of refresh=true and cycles in references
* [OJB-40] - CallableStatement check doesn't work with maxDB
* [OJB-42] - MsSQLServer, auto-generated querry error (m:n relation)
* [OJB-44] - ReferenceMap$Entry keeps growing over period of application usage.
* [OJB-52] - KeyConstraintViolatedException during store
* [OJB-54] - ConnectionFactoryManagedImpl may try to use pool
* [OJB-55] - Getting foreignkeyField's FieldDescriptor is failing if the foreignkey
field is defined in the base class
* [OJB-59] - Incorrect identity management in SequenceManagerNativeImpl
because of wrong plate-forme settings
* [OJB-62] - addPathClass in QueryByCriteria does not consider inheritance
* [OJB-63] - Bug when query against objects mapped on multiple joined tables
("super"-references)
* [OJB-70] - Connection reset by peer: socket write error
* [OJB-76] - OJB MtoN implementor failes to work properly with composite M&N keys
that
have some fields common.
* [OJB-77] - PlatformMsSQLServerImpl.getLastInsertIdentityQuery creates incorrect
SQL
statement to pull the identity from the last
KNOWN ISSUES:
* Auto-Detection for insert/update objects checks to avoid DB queries the PK fields
of the object.
If at least one PK field is 'NULL' or if primitive field '0', OJB assume the
object is new and
needs insert. This will be configurable in next upcoming version. Workaround for
PB-api: use method
PB#store(Object obj, ObjectModification mod) to state update or insert.
* Batch handling doesn't work properly with optimistic locking. This will be fixed
in version 1.1
* Subqueries are not extent aware. see QueryTest#testSubQueryAgainstExtents
* Managed Environment: When run OJB in managed environment and using
PBStateListener, the call of
PBStateListener#beforeClose(PBStateEvent event) is made twice when
a PB instance was closed in a JTA-tx (for the first time when PB.close() was
called
in bean on the PB handle, second time when the JTA-tx completes)
* otm-api: The OTM API has a known caching issue and should not be considered for
code used
in production environments. The future of the OTM layer will be subject for
discussion on the
OJB developers list, if you are using it - please subscribe to ojb-dev and make
your voice heard.
* Oracle9i platform: when using statement batching, there is a 2k limit on BLOB +
4k limit on CLOB.
---------------------------------------------------------------------
Release 1.0.3
---------------------------------------------------------------------
NEW FEATURES:
NOTES:
- odmg-api: Named objects can now be non- and persistence capable objects. At least
the named object have to be serializable.
CHANGES:
- Refactoring DCollection implementations, remove DListImpl_2 classes (code moved
to DListImpl)
- Object2ByteArrFieldConversion: If source object on conversion javaToSQL is
'null', no longer create an
byte array simply return 'null'
BUG FIXES:
Please refer to our Bug tracking site
(http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10700)
to see details for a bug with id OJB-xxx.
KNOWN ISSUES:
- Auto-Detection for insert/update objects checks to avoid DB queries the PK fields
of the object.
If at least one PK field is 'NULL' or if primitive field '0', OJB assume the
object is new and
needs insert. This will be configurable in next upcoming version. Workaround for
PB-api: use method
PB#store(Object obj, ObjectModification mod) to state update or insert.
- Batch handling doesn't work proper with optimistic locking. This will be fixed
in version 1.1
- Subqueries are not extent aware. see QueryTest#testSubQueryAgainstExtents
- When a class mapped on multiple joined tables was used in a reference only
objects
of the base type class will be instantiated, e.g. a Company class has
a 1:n reference 'employees' to a base class Employee and class Manager extends
Employee,
then 'employees' only contains objects of type Employee even if the real type was
Manager.
See in OJB test suite
...broker.InheritanceMultipleTableTest#testInheritancedObjectsInCollectionReference
s
Same problem occur when query the base class, then OJB only returns objects of
base type instead
the real type.
- Managed Environment: When run OJB in managed environment and using
PBStateListener, the call of
PBStateListener#beforeClose(PBStateEvent event) is made twice when
a PB instance was closed in a JTA-tx (for the first time when PB.close() was
called
in bean on the PB handle, second time when the JTA-tx completes)
- otm-api: The OTM API has a known caching issue and should not be considered for
code used
in production environments. The future of the OTM layer will be subject for
discussion on the
OJB developers list, if you are using it - please subscribe to ojb-dev and make
your voice heard.
- Oracle9i platform: when using statement batching, there is a 2k limit on BLOB +
4k limit on CLOB.
---------------------------------------------------------------------
Release 1.0.2
---------------------------------------------------------------------
NEW FEATURES:
NOTES:
- ODMG-api refactoring!! All known issues in test suite are fixed. But the
refactored odmg-api
version needs changes in auto-xxx settings in metadata and changed OJB.properties
settings.
Please read carefully the 'CHANGES notes' below.
- Don't forget to replace the old repository.dtd and OJB.properties file (both
files changed).
- If you plan to use OJB with an J2SE version older than 1.4, then you have to
replace the Geronimo jars with the corresponding ones from Sun's J2EE SDK. This
is because Geronimo is a J2EE 1.4 implementation and thus dependant upon
J2SE 1.4. Use instead the version of Sun's J2EE reference implementation that
correspond to your J2SE version. E.g. for J2SE 1.3 use the J2EE 1.3 SDK which
you can get from here: http://java.sun.com/j2ee/1.3/index.jsp
- Performance improvement in handling of m:n relations
- Add new property 'sequenceStart' for SequenceManagerHighLowImpl and
SequeceManagerInMemoryImpl
more info see docs section 'sequence manager'
- Recommended to read the updated 'object cache' reference guide to reflect on the
changes made in
caching behavior.
- By default a new locking implementation was used for odmg, to enable the old
deprecated odmg-locking,
please see comments in OJB.properties file.
CHANGES:
- When using Oracl9i platform and DBCP connection factory, no PreparedStatement
caching will occur
in the DBCP pool (Oracle JDBC-driver statement caching is performed by the
platform as default).
statement pool, to avoid running out of server-side cursors when using Oracle9i
platform.
- Oracle9i default platform should now be usable and have large LOB support in
JBoss environemnts,
please try the default Oracle9i platform and report your results to the ojb-user
list.
- Oracle9i default platform should now be usable and have large LOB support in BEA
WebLogic,
please try the default Oracle9i platform in favor of WLOracle9i and report your
results to
the ojb-user list.
- Oracle9i platform no longer throws exceptions when Oracle-specific extensions
initializer fails,
this should enable Oracle9i platform to degrade smoothly in not yet handled
managed environments.
- Oracle9i platform now uses ANSI SQL92 join syntax as per user-request. The Oracle
platform
still uses Oracle join syntax to be compatible with Oracle 8 and older versions.
- CollectionProxy classes will now throw an exception in constructor, if trying
to use dynamic proxies with MetadataManager in 'per thread changes' mode but
without any metadata profile key loaded in the current thread. See note about
fix in CollectionProxy under "BUG FIXES" below.
- Minor changes in the repository.dtd. Add element object-cache to metadata
interface and abstract class
declaration in class-descriptor. So replacement of old repository.dtd is needed.
- Remove object-cache declaration from OJB.properties file. Use the 'object-cache'
element in
repository file (example see repository_database.xml file shipped with OJB) to
specify the cache
implementation. More detailed information see caching reference guide in docs.
- Remove redundant ObjectCache implementations (ObjectCacheSoftImpl,
ObjectCacheUnlimitiedImpl), same
behavior is possible with ObjectCacheDefaultImpl.
- Remove undocumented 'ObjectCacheFilter' (used to filter out whole packages or
classes from being cached).
Filter out packages or classes from being cached is still possible, please see
'object cache' reference guide.
- !!!In managed enviroments the org.odmg.Transaction#abort() call no longer throws
an
TransactionAbortedExceptionOJB, instead OJB does internal cleanup and set used
JTA-tx to setRollbackOnly if possible. Thus the client does no longer get an
RemoteException.
The user have to throw an EJBException by himself to notify the client.
- Performance of the default RowReader (RowReaderDefaultImpl) was improved, when
mapping
several classes to the same table ("ojb-conrete class" feature), now only the
fields of the
associated class were performed in RowReader instead invoking all fields of the
table used by
the mapped classes.
- Introduce new locking-package in kernel api. Now top-level api like odmg-api can
use a kernel
lock manager to provide locking. Adapt odmg-locking to the new lock management
and declare old locking stuff
in org.apache.ojb.odmg.locking package as deprecated. Add support for apache's
commons-transaction locking part.
- Use of database identity column (SequenceManagerNativeImpl). Move assign of PK
values from
PersistenceBrokerImpl to JdbcAccessImpl#executeInsert. Remove usage of
SequenceManager#setReferenceFKs,
will be handled by OJB in same way as without usage of database identity column.
- odmg-api: Introduced new object reordering implementation (replaces old algorithm
in ObjectEnvelopeTable).
- odmg-api: Change used 'OqlCollectionClass' in OJB.properties from a DList impl to
ArrayList impl
to improve performance. If you need the additional features of odmg DList comment
in the DList impl.
- odmg-api: ** All relations (1:1, 1:n and m:n) need auto-update/delete setting
'none' to proper work.**
- odmg-api: Cascade delete is now configurable via OJB.properties file and at
runtime using
TransactionExt#setCascadingDelete method (cast Transaction instance to
TransactionExt)
BUG FIXES:
Please refer to our Bug tracking site
(http://issues.apache.org/scarab/servlet/scarab/)
under http://issues.apache.org/scarab/servlet/scarab/issues/id/OJBxxx
to see details for a bug with id OJBxxx.
KNOWN ISSUES:
- Auto-Detection for insert/update objects checks to avoid DB queries the PK fields
of the object.
If at least one PK field is 'NULL' or if primitive field '0', OJB assume the
object is new and
needs insert. This will be configurable in next upcoming version. Workaround for
PB-api: use method
PB#store(Object obj, ObjectModification mod) to state update or insert.
- Batch handling doesn't work proper with optimistic locking. This will be fixed
in version 1.1
- Subqueries are not extent aware. see QueryTest#testSubQueryAgainstExtents
- When a class mapped on multiple joined tables was used in a reference only
objects
of the base type class will be instantiated, e.g. a Company class has
a 1:n reference 'employees' to a base class Employee and class Manager extends
Employee,
then 'employees' only contains objects of type Employee even if the real type was
Manager.
See in OJB test suite
...broker.InheritanceMultipleTableTest#testInheritancedObjectsInCollectionReference
s
Same problem occur when query the base class, then OJB only returns objects of
base type instead
the real type.
- Managed Environment: When run OJB in managed environment and using
PBStateListener, the call of
PBStateListener#beforeClose(PBStateEvent event) is made twice when
a PB instance was closed in a JTA-tx (for the first time when PB.close() was
called
in bean on the PB handle, second time when the JTA-tx completes)
- otm-api: The OTM API has a known caching issue and should not be considered for
code used
in production environments. The future of the OTM layer will be subject for
discussion on the
OJB developers list, if you are using it - please subscribe to ojb-dev and make
your voice heard.
- Oracle9i platform: when using statement batching, there is a 2k limit on BLOB +
4k limit on CLOB.
---------------------------------------------------------------------
Release 1.0.1
---------------------------------------------------------------------
NEW FEATURES:
- Add new service for Identity object creation -
PersistenceBroker#serviveIdentity()
This service makes creation of Identiy objects to lookup objects by primary key
much
easier. More info see PersistenceBroker Tutorial section "Find object by primary
key".
For example, to lookup an object by its Identity with PB.getObjectByIdentity,
for
a single Long PK field (with value '23') you can call:
Identity oid = broker.serviceIdentity().buildIdentity(MyClass.class, new
Long(23));
result = (MyClass) broker.getObjectByIdentity(oid);
NOTES:
- Changed build dependency from Sun's SCSL licensed J2EE specification jars to the
Geronimo projects's ASL 2.0 licensed J2EE specification jars. Users now can build
the core of OJB (everything but the jdori plugin) directly from the source
tarball
or CVS.
NOTE: If you plan to use OJB with an J2SE version older than 1.4, then you have
to
replace the Geronimo jars with the corresponding ones from Sun's J2EE SDK.
This
is because Geronimo is a J2EE 1.4 implementation and thus dependant upon
J2SE 1.4. Use instead the version of Sun's J2EE reference implementation
that
correspond to your J2SE version. E.g. for J2SE 1.3 use the J2EE 1.3 SDK
which
you can get from here: http://java.sun.com/j2ee/1.3/index.jsp
CHANGES:
- PersistenceBroker interface changed, add service method for IdentityFactory
- Performance improvement in RsIterator, first only map PK values from the
result set and check against the cache. If no match map all field values
from result set to internal Map class (old version always maps all values
from the result set to the internal Map class).
- add in ObjectCacheDefaultImpl new attribute 'cachingKeyType' this allows to
differ cached objects of same class for different databases.
http://mail-archives.apache.org/eyebrowse/ReadMsg?listName=ojb-
[email protected]&msgNo=13931
BUG FIXES:
Please refer to our Bug tracking site
(http://issues.apache.org/scarab/servlet/scarab/)
under http://issues.apache.org/scarab/servlet/scarab/issues/id/OJBxxx
to see details for a bug with id OJBxxx.
KNOWN ISSUES:
- odmg-api: If a user exchange already existing objects in 1:n references without
changing the size
of the collection, the main object will not become dirty and the FK values of the
exchanged objects
will not be updated.
E.g. two objects obj_1 anf obj_2 with 1:n reference to ref objects, each with one
existing/persistent reference object, obj_1{ref_1} and obj_2{ref_2}.
Lock objects and exchange the references in collection obj_1{ref_2}
and obj_2{ref_1} and commit --> FK values of ref_1 and ref_2 will not be updated.
- odmg-api: Creation of m:n relation only works when objects created step by step
(or use PB-api
as workaround), persist a whole object graph seems not to work proper.
- Batch handling doesn't work proper with optimistic locking. This will be fixed
in version 1.1
- Subqueries are not extent aware. see QueryTest#testSubQueryAgainstExtents
- When using native Identity columns, OJB uses a temporary dummy value for created
OJB Identity objects
of new pc objects (negative long values are used as dummy values for Identity
columns, the real value
is available after the object insert), so the FK assignment is only valid after
store of the
referenced object (PB-api handles this correctly). TransactionImpl#lock assign
the FK before the
referenced object was written to DB. This only effects the ODMG API.
- Mapping of an inheritance hierarchy to multiple joined tables fails in the ODMG
API only.
---------------------------------------------------------------------
Release 1.0
---------------------------------------------------------------------
NEW FEATURES:
--
NOTES:
--
CHANGES:
- We introduce new PersistentField implementations in OJB.properties file called
PersistentFieldXXXXImplNew. Per default one of the new PersistentField
implementations was
used. If you hit problems please send a report. You can reverting to old impl by
changing property 'PersistentFieldClass' in OJB.prperties file. The new versions
has much better performance in read/write nested fields (up to 50 times faster than
the 'old' implementions) and will replace the old classes on next version. Because
PersistentField is an important kernel class we wait for community response before
final replacement.
BUG FIXES:
Please refer to our Bug tracking site
(http://issues.apache.org/scarab/servlet/scarab/)
under http://issues.apache.org/scarab/servlet/scarab/issues/id/OJBxxx
to see details for a bug with id OJBxxx.
KNOWN ISSUES:
- The default ojb escape character '\' does not work for database using the same
default as well and
should therefore be double-escaped. As a workaround always use a custom escape
character:
LikeCriteria.setEscapeCharacter('|');
Criteria crit = new Criteria();
crit.addLike("firstname", "h%|%");
- odmg-api: Creation of m:n relation only works when objects created step by step
(or use PB-api
as workaround), persist a whole object graph seems not to work proper.
- ReportQueries should not be used with columns referencing Classes with extents:
ReportQueryByCriteria q = QueryFactory.newReportQuery(ProductGroup.class,
crit);
q.setAttributes(new String[] { "groupName", "sum(allArticlesInGroup.stock)",
"sum(allArticlesInGroup.price)" });
q.addGroupBy("groupName");
Due to the fact the Article has extents multiple selects will be executed,
so the same ProductGroup may show up more than once.
- Batch handling doesn't work proper with optimistic locking. This will be fixed
before long after 1.0
---------------------------------------------------------------------
Release 1.0 rc7
---------------------------------------------------------------------
NEW FEATURES:
NOTES:
- OJB.properties file has changed, don't forget to replace on update!
Among other things the property 'ImplementationClass' was needed to set in managed
environments.
CHANGES:
- Base class for ODMG api access within non- or managed environments is now
org.apache.ojb.odmg.OJB. The used org.odmg.Implementation interface implementation
is specified in OJB.properties.
- the indirection handler (for reference proxies), and the list and set proxy
classes
can now be configured in the OJB.properties file
- new CollectionProxy interface introduced to allow the ODMG api to make use of
alternate collection proxy implementations.
BUG FIXES:
KNOWN ISSUES:
- odmg-api: If a user exchange already existing objects in 1:n references without
changing the size
of the collection, the main object will not become dirty and the FK values of the
exchanged objects
will not be updated.
E.g. two objects obj_1 anf obj_2 with 1:n reference to ref objects, each with one
existing/persistent reference object, obj_1{ref_1} and obj_2{ref_2}.
Lock objects and exchange the references in collection obj_1{ref_2}
and obj_2{ref_1} and commit --> FK values of ref_1 and ref_2 will not be updated.
- odmg-api: Creation of m:n relation only works when objects created step by step
(or use PB-api
as workaround), persist a whole object graph seems not to work proper.
- ReportQueries should not be used with columns referencing Classes with extents:
ReportQueryByCriteria q = QueryFactory.newReportQuery(ProductGroup.class,
crit);
q.setAttributes(new String[] { "groupName", "sum(allArticlesInGroup.stock)",
"sum(allArticlesInGroup.price)" });
q.addGroupBy("groupName");
Due to the fact the Article has extents multiple selects will be executed,
so the same ProductGroup may show up more than once.
- Batch handling doesn't work proper with optimistic locking. This will be fixed
before long after 1.0
---------------------------------------------------------------------
Release 1.0 rc6
---------------------------------------------------------------------
NEW FEATURES:
-
NOTES:
- Repository.dtd has changed, don't forget to replace this file
- Upgraded to the new Apache License, Version 2.0
- No support for HSQLDB 1.7.2RC1 yet
- No support for Torque 3.1 yet
- no longer throw an exception when calling abortTransaction more than one time
or an internal rollback (by ConnectionManager on the used connection) was already
done
BUG FIXES:
- fix bug in MetadataManager, when 'per thread changes' is enabled and many
different
DescriptorRepository instances were used, gc can't collect unused instances because
StatementManager doesn't release references to used DescriptorRepository instances.
- The bogus ODMG Distributed Lockmanagement feature has been replaced by a new
Servlet based LockServer. Transaction isolation should now work properly even
accross a cluster of JVMs.
KNOWN ISSUES:
- odmg-api: It is not possible to exchange objects in 1:n references.
E.g. two objects with 1:n reference, each with one reference object, obj_1{ref_1}
and obj_2{ref_2}. Lock objects and exchange the references in collection
obj_1{ref_2}
and obj_2{ref_1} and commit.
---------------------------------------------------------------------
Release 1.0 rc5
---------------------------------------------------------------------
This is the last planned rc before the 1.0 release. If there are no major
bugs this release will be relabled as 1.0 after two weeks.
NEW FEATURES:
- With this release we are feature complete for the 1.0 release!
For 1.0 you should not expect more features to be added.
NOTES:
- slight changes in repository.dtd, OJB.properties were made
- changed the JDORI plugin to now use the latest 1.0.1 version of the JDO reference
implementation.
CHANGES:
- add possibility to declare ObjectCache implementation on class-descriptor
and jdbc-connection-descriptor level (means per class and per database connection)
too
BUG FIXES:
- fixed the JDORI problems with loading object via extend based queries.
now objects are brought under JDO control and equipped with a statemanager
in the load process.
---------------------------------------------------------------------
Release 1.0 rc4
---------------------------------------------------------------------
NEW FEATURES:
- With this release we are feature complete for the 1.0 release!
For 1.0 you should not expect more features to be added.
- added a XDoclet OJB Module that allows to generate repository.xml
and DDL from tagged Java sources to the "contrib" distribution.
- added an OJB Taglib that allows to use OJB directly from JSP pages
to the "contrib" distribution.
NOTES:
- update used xdoclet version in 'ejb-examples'
(see section deployment/'Build the OJB sample session beans')
to version 1.2xx
CHANGES:
- Enhance MetadataManager, add new methods, simplify handling
of different persistent object metadata profiles (means different
org.apache.ojb.broker.metadata.DescriptorRepository instances) at
runtime
- Provide a PUBLIC doctype declaration for the repository.xml
- add a convenience Constructor to QueryByCriteria that
builds a query selecting all instances of a class
- add isClosed() method to PersistenceBroker interface to
check if a broker instance was already closed.
- make OJB more strict in handling closed PersistenceBroker
instances. Now it's not any longer possible to use closed
PersistenceBroker instances.
- Package ...metadata.fieldaccess refactored/changed. Now
all PersistentField implementations support 'nested fields'.
See new entries in OJB.properties file.
- added new sections to documentation
BUG FIXES:
- fix several bugs in documentation
- fixed writing to memo columns in MS Access
- fixed optimistic locking problem
- fixed jdo tutorial setup
---------------------------------------------------------------------
Release 1.0 rc3
---------------------------------------------------------------------
NEW FEATURES:
- With this release we are feature complete for the 1.0 release!
For 1.0 you should not expect more features to be added.
NOTES:
- Intern table OJB_HL_SEQ (used by SequenceManagerHighLowImpl)
has changed! Now need an additional column 'VERSION' of type INTEGER
When updating from earlier version drop/reinstall table with additional field
- PersistenceBrokerAware interface changed, methods beforeStore and afterStore
split into xxxInsert/xxxUpdate methods, all methods now expect an
PersistenceBroker
argument
- PersistenceBrokerListener interface replaced by PBStateListener
- ManageableCollection interface add new method afterStore(...)
- Remove obsolete method 'invalidate(Identity oid)' from PB-api
CHANGES:
- enhanced PB-api listener classes
- unified handling of events in PB-api
- adapt sequence manager implementations using 'long' instead 'int' keys
- SequenceManagerHighLowImpl now use optimistic locking to support sequencing
across different JVM (except j2ee conform app server, see sequence manager doc).
- Add new attribute 'autoNaming' to sequence manager implementations. Now
the implementations allow to switch on/off auto-generating of sequence names
- merging the three package o.a.ojb.broker.ta, .singlevm and .server into
a new package o.a.ojb.broker.core
BUG FIXES:
- fixed problems with the JDO FieldManager to work with 1:1, 1:n and m:n
associations
- OJB143, OJB152, OJB153, OJB156, OJB158, OJB159, OJB161
---------------------------------------------------------------------
Release 1.0 rc2
---------------------------------------------------------------------
NEW FEATURES:
- With this release we are feature complete for the 1.0 release!
For 1.0 you should not expect more features to be added.
CHANGES:
- improve cache package. Now the used cache is no longer a singleton.
- Add CacheFilter interface to allow easy pre-filtering of cache methods.
- Add Support for anonymous fields
- Several improvements to SQL generation
- improved handling of optimistic lock exceptions in ODMG
BUG FIXES:
- lots
---------------------------------------------------------------------
Release 1.0 rc1
---------------------------------------------------------------------
NEW FEATURES:
- With this release we are feature complete for the 1.0 release!
For 1.0 you should not expect more features to be added.
CHANGES:
- improved handling for non-distributable jars
- MetadataManager: new methods, allow merge of new ConnectionDescriptor and
RepositoryDescriptor
(read from any repository file at runtime) with the existing ones.
- add custom attribute support for DescriptorRepository and
JdbcConnectionDescriptor.
BUG FIXES: