Инструменты Hiberante - Создание сущности JPA
Я использую Hibernate Tools для создания своей сущности.
Теперь я должен редактировать и добавлять новые аннотации как (@ JsonIgnore
так далее...)
Моя проблема заключается в следующем:
В будущем мне нужно будет добавить дополнительные столбцы в мою базу данных и восстановить свою сущность с помощью инструментов гибернации.
Теперь моя сущность перезаписывается, теряя мои правки.
существует шаблон? или решение?
не потерять мои изменения
благодарю вас.
2 ответа
Решение 1
Я рекомендую не восстанавливать ваши сущности. Я рекомендую вручную обновить вашу сущность новыми столбцами и использовать следующие настройки:
<property name="hibernate.hbm2ddl.auto">validate</property>
Чтобы быть уверенным, что ваше отображение столбца работает.
Решение 2
Я никогда не пробовал это, но другое решение расширяет класс сущностей. Пример:
@Entity
public class YourGeneratedEntity {
}
public class YourClassWithModifications extends YourGeneratedEntity {
}
При таком подходе ваши модификации, которые используют атрибуты от сущности, не будут потеряны при регенерации класса сущности.
Я буду очень политическим здесь, я думаю, что комментарий @Neil McGuigan действительно плохой совет. и 2-й пункт в ответе Дерика такой же плохой.
Инструмент для автоматической генерации предназначен для упрощения использования hibernate/JPA из существующей базы данных. Как только вы создаете исходные объекты, вы никогда, никогда не создаете их заново, причина довольно проста, инструмент глуп и единственное, что он может сделать, это предположить, что вы хотите отобразить ваши объекты точно так же, как они в БД... он не будет создавать для вас аннотации UserTypes, Embeddables, SecondaryTable или Converters. Он не будет знать (или делать плохую работу) в сопоставлении ассоциаций, так как в целом вы должны предпочесть однонаправленные ассоциации.
Получив начальное отображение, вам нужно поработать над ним, чтобы преобразовать его в правильную объектно-ориентированную модель.
Суть в следующем: если ваши объекты Entity имеют ту же структуру и форму, что и ваша база данных, вы делаете что-то не так. Объектно-ориентированное проектирование и реляционное моделирование - это две разные вещи. Есть даже термин, называемый несоответствием между объектным и реляционным импедансом, чтобы объяснить эту разницу.