Моделирование множественных полиморфных отношений с использованием Hibernate - PullRequest
0 голосов
/ 23 марта 2010

Ruby on Rails имеет полиморфные отношения, которые действительно полезны для реализации таких функций, как комментирование, тегирование и оценка, и многие другие.У нас может быть класс комментария, тега или рейтинга, который имеет полиморфное отношение много-к-одному с комментируемым, тегируемым и оцениваемым объектом.Кроме того, данный объект домена может выбрать реализацию любой комбинации таких отношений.Так, например, он может быть одновременно комментируемым, тегируемым и оцениваемым.

Я не мог придумать простой способ дублировать эту функциональность в Hibernate.В идеале, должен существовать класс Comment, который будет иметь отношение многие к одному с классом Commentable, а класс Commentable, наоборот, будет иметь отношение один ко многим с Comments.Было бы идеально, если бы конкретные доменные классы могли наследоваться от ряда таких классов, например Commentable и Taggable.Вещи кажутся немного сложными, поскольку класс Java может расширять только один другой класс, и некоторый код может в конечном итоге дублироваться в нескольких классах.

Я хотел бы знать, каковы наилучшие практики для аккуратного и лаконичного моделирования таких отношений с использованием Hibernate?

1 Ответ

0 голосов
/ 23 марта 2010

Мне кажется, что ваш вопрос не специфичен для гибернации, а скорее на тему "как мне обойти модель одиночного наследования?"

Если реализация интерфейсов - это не то, о чем вы думаете, AOP (Аспектно-ориентированное программирование) может предоставить вам способ сделать то, что вы хотите.

...