#database #hibernate #jpa
#База данных #спящий режим #jpa
Вопрос:
Обязательно ли указывать все свойства атрибута, подобные этому
@Column(name = "ID_COMPANY", unique = true, nullable = false)
или сделать просто :
@Column(name = "ID_COMPANY")
и для строки мы должны указать длину?
@Column(name = "NAME", length = 30)
или просто :
@Column(name = "NAME")
Потому что, если я изменю длину varchar
в своей базе данных, мне придется снова изменить ее в своем классе сопоставления, и это немного сложно, если у меня много изменений.
Ответ №1:
Нет, это не обязательно.
Большинство из этих параметров, отличных от name
, используются только в том случае, если вы используете режим гибернации для создания схемы базы данных. Если вы поддерживаете свою схему вручную, вы можете безопасно опустить их.
Однако некоторые из них (например, nullable
или unique
) могут быть полезны для целей документации.
Комментарии:
1. спасибо, я использовал инструменты гибернации для создания класса сопоставления… как я могу сгенерировать их снова только с
name
помощью option ?2. @user3756879: Я не знаком с этими инструментами.
3. Но я хочу знать, есть ли у меня
varchar (20)
в моей базе данных, иlength=30
это вызовет выполнение?4. Нет. Там атрибуты используются только тогда, когда Hibernate сгенерировал схему.
Ответ №2:
Все элементы @Column
аннотации имеют значения по умолчанию. Если ваша схема не противоречит значениям по умолчанию для обнуляемости, уникальности, длины и т. Д. (или ваш столбец DB не совсем соответствует имени вашего имени поля), вы можете оставить их в аннотации, чтобы предотвратить беспорядок.
Значения по умолчанию можно увидеть в JavaDoc здесь: http://docs.oracle.com/javaee/7/api/javax/persistence/Column.html