В чем разница между @Column
и @Basic
аннотаций в JPA? Можно ли их использовать вместе? Следует ли их использовать вместе? Или одного из них достаточно?
источник
В чем разница между @Column
и @Basic
аннотаций в JPA? Можно ли их использовать вместе? Следует ли их использовать вместе? Или одного из них достаточно?
@Basic
означает, что атрибут должен быть сохранен и должно использоваться стандартное отображение. У него есть параметры, которые позволяют указать, должен ли атрибут загружаться лениво и допускать ли его значение NULL.
@Column
позволяет указать имя столбца в базе данных, в котором должен быть сохранен атрибут.
Если вы укажете одно без другого, вы получите разумное поведение по умолчанию, поэтому обычно люди используют только один, за исключением особых случаев.
Итак, если нам нужна ленивая загрузка атрибута и указание имени столбца, мы можем сказать
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Если бы нам нужно было по умолчанию неленивое поведение, этого @Column
было бы достаточно.
@Basic
без@Column
, именно поэтомуoptional
иnullable
свойства существуют в обоих. Я прав?Помимо ответа @djna стоит отметить, что
@Basic
следует сравнивать с@OneToMany
,@ManyToOne
и@ManyToMany
. Только один из них может быть указан для любого свойства.@Column
и@JoinColumn
может быть указан вместе с любым из них для описания свойств столбца базы данных.Это два набора аннотаций, которые можно использовать вместе, но одновременно можно использовать только одну аннотацию каждого набора.
источник
Стоит отметить, что Basic предназначен для примитивных полей.
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
источник
Аннотации @Basic применяются к объектам JPA, а аннотации @Column применяются к столбцам базы данных. Необязательный атрибут аннотации @Basic определяет, может ли поле объекта иметь значение NULL или нет; с другой стороны,
источник