Почему Hibernate повторно реализует функциональность, которая уже есть в базах данных? - PullRequest
1 голос
/ 25 сентября 2010

Например:

@Table(name = "stock", catalog = "mkyong", uniqueConstraints = {
@UniqueConstraint(columnNames = "STOCK_NAME"),
@UniqueConstraint(columnNames = "STOCK_CODE") })

или

@Column(name = "STOCK_NAME", unique = true, nullable = false, length = 20)

Такие ограничения, как «уникальность», «обнуляемость» и даже длина поля, являются основными характеристиками базы данных. Зачем включать это здесь? Кроме того (хотя это может повредить некоторым), я также готов поспорить, что реализация таких ограничений в базе данных, особенно в коммерческих коммерческих БД, таких как Oracle, вероятно, лучше, чем те, что могут предложить разработчики OSS Hibernate.

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

Ответы [ 2 ]

3 голосов
/ 25 сентября 2010

Он не реализует их - он имеет возможность проверить модель данных по схеме или создать ее.

Свойство hibernate.hbm2ddl.auto конфигурации - это свойство, позволяющее создавать схему на основе сопоставлений.

Автоматически проверяет или экспортирует DDL схемы вбаза данных при создании SessionFactory.С помощью create-drop схема базы данных будет отброшена, когда SessionFactory будет закрыт явно.

например, validate |обновление |создать |create-drop

Это очень полезно, если вы хотите, чтобы ваша модель данных была в центре, а не структура базы данных

0 голосов
/ 25 сентября 2010

Hibernate может создать схему базы данных на основе этих аннотаций для вас.

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