Ссылочная страница linux.org объясняет механику, но не объясняет ни одной мотивации позади нее :-(
Для этого, видит Компоновщик Sun и Руководство Библиотек
, Кроме того, отмечает, что "внешнее управление версиями" является в основном устаревшим на Linux, потому что управление версиями символа (расширение GNU) позволяет Вам иметь несколько несовместимых версий той же функции для присутствования в единственной библиотеке. Это расширение позволило glibc иметь ту же внешнюю версию: libc.so.6
в течение прошлых 10 лет.
@Basic
означает, что атрибут должен быть сохранен, и должно использоваться стандартное отображение. У него есть параметры, которые позволяют вам указать, должен ли атрибут загружаться лениво и допускать ли его значение NULL.
@Column
позволяет вам указать имя столбца в базе данных, в котором должен быть сохранен атрибут.
Если вы укажете одно без другого, вы получите поведение по умолчанию, которое является разумным, поэтому обычно люди используют только один, за исключением особых случаев.
Итак, если бы мы хотели отложить загрузку атрибута и указать столбец имя, которое мы можем сказать
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Если бы нам нужно было по умолчанию неленивое поведение, тогда было бы достаточно @Column
.
Помимо ответа @ djna , стоит отметить, что @Basic
следует сравнить с @OneToMany
, @ManyToOne
и @ManyToMany
. Для любого свойства можно указать только один из них.
@Column
и @JoinColumn
могут быть указаны вместе с любым из них для описания свойств столбца базы данных.
Это два набора аннотаций, которые можно использовать вместе, но одновременно можно использовать только одну аннотацию каждого набора.