Возможен ли такой подход для сопоставления «многие ко многим» в Hibernate? - PullRequest
1 голос
/ 27 января 2011

У меня есть три таблицы: item , node и item_node в качестве связующей таблицы, которая, конечно, содержит идентификаторы элемента и узла.

Можно ли сопоставить таблицу связывания ( item_node ) таким образом, чтобы соответствующий класс ItemNode как-то содержал ссылки на классы Item и Node?Есть ли известная практика для отображения таблиц ссылок в отношениях m: n?

Я мог бы представить что-то вроде этого:

<class name="test.model.ItemNode" table="ITEM_NODE">
    <composite-id name="ID" class="test.model.INCompID">
        <key-property name="item" column="ITEM_ID" />
        <key-property name="node" column="NODE_ID"/>
    </composite-id>
</class>

, где INCompID - класс для составного идентификатора:

public class INCompID {

private Item item;
private Node node;

//getters, setters and overriden 
//equals() and hashCode() methodes
}

Item и Узел уже сопоставлены и работают сами по себе.

Я знаю, что это не обычный подход для работы со связями "многие ко многим", но у меня возникла довольно досадная проблема со стандартным подходом на основе наборов / сумок из-за паршивого исключения ленивой инициализации, и тамЭто не способ загружать эти коллекции с нетерпением, потому что они содержат огромное количество данных (сотни тысяч строк в таблицах БД).
Spring AOP используется для управления транзакциями.OpenSessionInViewFilter / Interceptor, по-видимому, также не подходит для этой конкретной проблемы, поэтому ...

1 Ответ

1 голос
/ 27 января 2011

Могу ли я отобразить таблицу связывания (item_node) таким образом, чтобы соответствующий класс ItemNode содержал ссылки на классы Item и Node?

Вы уверены, что можете.Еще один способ увидеть это - представить, что ItemNode может содержать свойство само по себе (например, sequence_no).Таким образом, ItemNode может фактически быть сущностью сам по себе, а не просто связью между Item и Node.

См. Этот пример из набора тестов Hibernate:

https://github.com/hibernate/hibernate-core/tree/master/hibernate-core/src/test/java/org/hibernate/test/manytomanyassociationclass

Есть ли какая-либо известная практика для отображения таблиц ссылок в отношениях m: n?

Есть личные предпочтения, но не лучшие практики.Есть люди, которые понимают, что все может измениться, и они к этому готовятся: они отображают отношения как единое целое.Кроме того, есть люди, которые считают, что эти отношения следует рассматривать так же, как отношения в модели ОО.

...