
.. include:: /Includes.rst.txt

.. _breaking-66429:

======================================================
Breaking: #66429 - Remove IdentityMap from persistence
======================================================

See :issue:`66429`

Description
===========

The `IdentityMap` class and its usage has been removed from the Extbase persistence.


Impact
======

Upgraded installations will throw a `ReflectionException`. Accessing the previously existing `IdentityMap`
properties within `DataMapper` and `Repository` will now fail. Creating `IdentityMap` instances is not possible
anymore.


Affected Installations
======================

All installations, especially extensions using the `IdentityMap` class directly or accessing the properties within
`DataMapper` or `Repository`.


Migration
=========

The Extbase reflection cache of existing installations needs to be cleared once.

Existing code can be migrated to the persistence `Session` class which provides a drop-in replacement for the
`IdentityMap`.


Usage example
=============

How to use the `Session` class to retrieve objects by an identifier:

.. code-block:: php

	$session = GeneralUtility::makeInstance(ObjectManager::class)->get(\TYPO3\CMS\Extbase\Persistence\Generic\Session::class);
	$session->registerObject($object, $identifier);
	if ($session->hasIdentifier($identifier)) {
		$object = $session->getObjectByIdentifier($identifier, $className);
	}


.. index:: PHP-API, ext:extbase
