Hibernate наследование с существующими таблицами - PullRequest
3 голосов
/ 05 августа 2010

У меня есть 2 существующие таблицы в моей базе данных.Давайте назовем их пока Стол и Стул .Обе эти таблицы отображаются как объекты в Hibernate

Обе эти таблицы уже существуют в моей базе данных в течение некоторого времени, и у них есть собственные, автоматически генерируемые идентификаторы в качестве первичных ключей.Я хочу сгруппировать эти объекты под очень логичным интерфейсом Furniture в моем коде Java, чтобы у меня был список в моем классе House .в наследство Hibernate, но, кажется, не понять это.Как я могу позволить своему классу House получить список всех принадлежащих ему Furniture ?И какую стратегию отображения наследования мне следует использовать?

Спасибо, Барт

1 Ответ

1 голос
/ 05 августа 2010

Вы на правильном пути.Если вы создаете интерфейс мебели или базовый класс и хотите, чтобы Table and Chair реализовали / расширили этот тип, вам следует идти вперед.Затем вы можете иметь

List<Furniture> 

для вашего дома.

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

  1. , чтобы создать таблицу мебели и иметь вместо нее все стулья / таблицы (одна таблица на иерархию классов).Вам не нужно делать это.В этом случае ваша таблица будет иметь все свойства обоих классов, поэтому не все столбцы будут использоваться в зависимости от сохраняемого типа.Там будет столбец «дискриминатора», чтобы hibernate мог определить тип строки.

  2. Вы хотите создать таблицу мебели и реорганизовать / нормализовать ваши таблицы Table / Chair так, чтобы всеобщие поля вытягиваются в мебельный стол.Вы держите столы и стулья.Это еще один тип полиморфного отображения (см. Документы)

  3. Другие параметры в спящих документах.

Вариант 1 является предпочтительной стратегией вя думаю, что это документация по гибернации.

Но чтобы приступить к этому, вам не нужно ничего делать - ваши сущности могут расширяться / наследоваться от других типов без каких-либо особых картографических соображений, если выжелающих иметь дубликаты столбцов в таблицах.

Я бы написал несколько простых JUnit или еще каких-нибудь тестов и попробовал бы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...