https://bugs.eclipse.org/bugs/show_bug.cgi?id=220394
Main change was to have new objects not build change records (still
create change set, but it is empty).
This improves performance of inserts. Insert always used the object, so is unchanged, merge no
uses the existing object merge, instead of merging with change sets.
If the descriptor uses cache synch of new objects, change records are
still built and merged. A backdoor
to switch back to using changes sets is in ClassDescriptor.
Changes:
- Changed new objects to not build change records, merge new objects
using object merge.
- Extended testing EmulatedDriver to work for adhoc SQL.
- Added support for comparing clone with database in ComplexUpdateTest,
but disable by default because of some test failures (logged bug).
- Fixed bug in aggregate collection change detection to not always think
that everything changed.
- Fixed bug in flush/resume for deferred change tracking to not use
merge into backup clone for new objects, (re-build backup clone instead), (logged
bug that updates still corrupt object identity in the backup clone).
- Optimized sequence check to use sequence mapping.
- Removed some dead code in ObjectBuilder.
- Some micro optimizations in uow and mappings.
- Use descriptor insert query on inserts, instead of new query that then
has to find the descriptor query.
- Fixed some comments.
- Optimized some commit/merge cases to avoid writes/merges when no
changes or not required.
- Avoid comparing if changed and raising change events when not in mergeClone
merge.
- Fixed class-cast exception in DirectMapMapping when collection is
replaced, (logged bug that deferred changes does not always work correctly).
- Changed sequencing to use long instead of BigDecimal.
- Some fixes to JPA performance tests.
- Use batch writing for cached performance tests.
Code Review: Gordon (pending)