There are new things we can see at Magento 2.3
in di.xml
for service contracts.
let's give an example:Magento_Cms
module
Like
Magento\Framework\EntityManager\MetadataPool
Magento\Framework\EntityManager\HydratorPool
Magento\Framework\EntityManager\Operation\ExtensionPool
I've seen in those classes, data interface or Repository interface as added arguments.
Suppose:
For Magento\Framework\EntityManager\MetadataPool
's metadata, Magento add
Magento\Cms\Api\Data\PageInterface
as a parameter and also added entity table name and table primary key.
<type name="Magento\Framework\EntityManager\MetadataPool">
<arguments>
<argument name="metadata" xsi:type="array">
<item name="Magento\Cms\Api\Data\PageInterface" xsi:type="array">
<item name="entityTableName" xsi:type="string">cms_page</item>
<item name="identifierField" xsi:type="string">page_id</item>
</item>
<item name="Magento\Cms\Api\Data\BlockInterface" xsi:type="array">
<item name="entityTableName" xsi:type="string">cms_block</item>
<item name="identifierField" xsi:type="string">block_id</item>
</item>
</argument>
</arguments>
</type>
Now, My question is what is
Magento\Framework\EntityManager\MetadataPool
and why it's needed.Why add Data interface, database table name and it pk field as this class parameters.
If We build a custom module(Has Database table) which has server Contract, then we need to follow this process like Cms page
Same Questions, I have for Magento\Framework\EntityManager\HydratorPool
<type name="Magento\Framework\EntityManager\HydratorPool">
<arguments>
<argument name="hydrators" xsi:type="array">
<item name="Magento\Cms\Api\Data\PageInterface" xsi:type="string">Magento\Framework\EntityManager\AbstractModelHydrator</item>
<item name="Magento\Cms\Api\Data\BlockInterface" xsi:type="string">Magento\Framework\EntityManager\AbstractModelHydrator</item>
</argument>
</arguments>
</type>