Я относительно новичок в Hibernate и пытаюсь перенести относительно простую существующую базу данных на то, что я могу использовать с Hibernate, и я ищу советы о том, как структурировать мое приложение.запросов в полиморфизме Hibernate
У меня есть 3 типа сущностей:
- Элемента
- Категория
- PropertyType
Элемента и Категория и PropertyType все похожи; они оба имеют название, описание, дата создания и т.д., но каждый из них имеет дополнительные отдельные функции:
- элемент имеет конкретное местоположение (URL)
- Категория содержит наборы Предмет и/или категории, в связь между многими и многими из категории и элемента, а также список смежности от родительской категории к дочерней категории.
- PropertyType является одним из ключевых метаданных для использования в таблице свойств полей ключ/значение, связанное с элементами, категории или других PropertyTypes
Сейчас я Пункт и категории определяются в отдельных таблицах, но мне интересно, было бы разумно создать абстрактный класс сущности узла, для которого Элемент и Категория являются подклассами. PropertyType достаточно разный, что он, вероятно, должен жить в своей собственной таблице. (У меня есть только 3 записи для Property, где PropertyType применяется к другому PropertyType и может избавиться от них, если это упростит ситуацию, так что PropertyType всегда применяется к узлу).
В настоящее время моя таблица свойств содержит поля для PropertyTypeId, ID (идентификатор элемента, категории или свойства), id_context (дискриминатор для предыдущего поля: 0 = элемент, 1 = категория, 2 = PropertyType) и значение (произвольная строка).
Конкретные вопросы:
Если я хочу сохранить свою существующую структуру таблицы (например пункт и категории имеют различные таблицы), как я говорю, Hibernate использовать id_context дискриминатор для определения типов недвижимости? Должен ли я создавать Item/Category/PropertyType подклассы общего предка, чтобы при получении объектов свойств, связанных с данным PropertyType, он мог возвращать списки, содержащие элемент или категорию?
Должен ли я использовать Hibernate вообще? Я знаю, как заставить SQL-запросы делать то, что я хочу, у меня просто возникают проблемы с тем, как обернуть Hibernate вокруг него.
Что мне нужно сделать, чтобы подтолкнуть Hibernate к выполнению запросов, которые я хочу? например если я просто хочу вернуть записи свойств, где PropertyType - 258, которые применяются к объектам категории (id_context = 2), я знаю, как это сделать в SQL (SELECT * FROM Property WHERE PropertyType = 258 AND id_context = 2), но я не знаю как это сделать в Hibernate.
ли вы планируете использовать файлы сопоставления XML Hibernate или аннотации? –
предпочтет аннотации, но рассмотрит XML. –