Как использовать элемент класса Composite-ID? - PullRequest
0 голосов
/ 01 октября 2009

когда вы должны использовать элемент class составного идентификатора?

например, рассмотрим этот фрагмент:

<composite-id name="id" ***class="OrderLineId"***>
    <key-property name="lineId"/>
    <key-property name="orderId"/>
    <key-property name="customerId"/>
</composite-id>

<property name="name"/>

<many-to-one name="order" class="Order"
        insert="false" update="false">
    <column name="orderId"/>
    <column name="customerId"/>
 </many-to-one>
  ....

например, какова цель OrderLineId выше? как это связано с другими частями?

1 Ответ

1 голос
/ 01 октября 2009

Короткий ответ: "Вы не должны": -)

Как правило, в первую очередь рекомендуется использовать суррогатный ключ; Более того, вы бы упростили сопоставления, используя один идентификатор вместо составного. Тем не менее, существуют ситуации (например, отображение устаревших схем), когда вам нужно использовать составной ключ.

В приведенном выше примере показано, как сопоставить составной ключ как компонент. Это лучший подход, чем использование самой сущности в качестве ее собственного ключа, что случится, если вы отобразите ее без атрибута class на <composite-id>. Основные отличия:

  1. При сопоставлении составного ключа как компонента вы напишите новый класс (OrderLineId), который будет содержать сопоставленные отдельные части ключа (lineId, orderId, customerId) в качестве свойств. При сопоставлении составного ключа с самой сущностью ваш класс сущности (OrderLine) должен будет содержать эти свойства.
  2. Чтобы загрузить OrderLine с использованием сопоставления «ключ как компонент», вы создадите новый экземпляр OrderLineId и передадите его в session.get() в качестве ключа. Используя отображение «ключ на сущность», вам нужно будет создать экземпляр OrderLine для загрузки OrderLine, что в лучшем случае сбивает с толку и в худшем случае представляет проблему целостности данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...