2011-10-24 01:35:04 +04:00
|
|
|
# ResultCache implementation rewritten
|
|
|
|
|
|
|
|
The result cache is completly rewritten and now works on the database result level, not inside the ORM AbstractQuery
|
|
|
|
anymore. This means that for result cached queries the hydration will now always be performed again, regardless of
|
|
|
|
the hydration mode. Affected areas are:
|
|
|
|
|
|
|
|
1. Fixes the problem that entities coming from the result cache were not registered in the UnitOfWork
|
|
|
|
leading to problems during EntityManager#flush. Calls to EntityManager#merge are not necessary anymore.
|
|
|
|
2. Affects the array hydrator which now includes the overhead of hydration compared to caching the final result.
|
|
|
|
|
|
|
|
The API is backwards compatible however most of the getter methods on the `AbstractQuery` object are now
|
|
|
|
deprecated in favor of calling AbstractQuery#getQueryCacheProfile(). This method returns a `Doctrine\DBAL\Cache\QueryCacheProfile`
|
|
|
|
instance with access to result cache driver, lifetime and cache key.
|
|
|
|
|
2011-10-15 17:49:41 +04:00
|
|
|
# EntityManager#getPartialReference() creates read-only entity
|
|
|
|
|
|
|
|
Entities returned from EntityManager#getPartialReference() are now marked as read-only if they
|
|
|
|
haven't been in the identity map before. This means objects of this kind never lead to changes
|
|
|
|
in the UnitOfWork.
|
|
|
|
|
|
|
|
# Fields omitted in a partial DQL query or a native query are never updated
|
|
|
|
|
|
|
|
Fields of an entity that are not returned from a partial DQL Query or native SQL query
|
|
|
|
will never be updated through an UPDATE statement.
|
|
|
|
|
2011-07-27 01:16:38 +04:00
|
|
|
# Removed support for onUpdate in @JoinColumn
|
|
|
|
|
|
|
|
The onUpdate foreign key handling makes absolutly no sense in an ORM. Additionally Oracle doesn't even support it. Support for it is removed.
|
2011-09-04 03:11:19 +04:00
|
|
|
|
|
|
|
# Changes in Annotation Handling
|
|
|
|
|
|
|
|
There have been some changes to the annotation handling in Common 2.2 again, that affect how people with old configurations
|
|
|
|
from 2.0 have to configure the annotation driver if they don't use `Configuration::newDefaultAnnotationDriver()`:
|
|
|
|
|
|
|
|
// Register the ORM Annotations in the AnnotationRegistry
|
|
|
|
AnnotationRegistry::registerFile('path/to/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');
|
|
|
|
|
|
|
|
$reader = new \Doctrine\Common\Annotations\SimpleAnnotationReader();
|
|
|
|
$reader->addNamespace('Doctrine\ORM\Mapping');
|
|
|
|
$reader = new \Doctrine\Common\Annotations\CachedReader($reader, new ArrayCache());
|
|
|
|
|
|
|
|
$driver = new AnnotationDriver($reader, (array)$paths);
|
|
|
|
|
|
|
|
$config->setMetadataDriverImpl($driver);
|