Відповіді:
@Basic
означає, що атрибут повинен зберігатися і використовувати стандартне відображення. У ньому є параметри, які дозволяють визначити, чи слід атрибут ліниво завантажуватись і чи він є нульовим.
@Column
дозволяє вказати ім'я стовпця в базі даних, до якої повинен зберігатися атрибут.
Якщо ви вказуєте один без іншого, ви отримуєте розумну поведінку за замовчуванням, тому люди зазвичай використовують лише одну, за винятком особливих випадків.
Отже, якщо ми хотіли ледачого завантаження атрибута та вказати ім'я стовпця, ми можемо сказати
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Якби ми не потребували поведінки за замовчуванням, не лінивої поведінки, тоді просто @Column
було б достатньо.
На додаток до @ DJNA Відповімо , варто відзначити , що @Basic
слід порівняти з @OneToMany
, @ManyToOne
і @ManyToMany
. У будь-якій власності може бути вказаний лише один із них.
@Column
і @JoinColumn
може бути вказаний разом із будь-яким із них для опису властивостей стовпців бази даних.
Це два набори анотацій, які можна використовувати разом, але одночасно може використовуватися лише одна примітка кожного набору.
Варто зазначити, що Basic розроблений для примітивних полів
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
Основний атрибут - це той, де клас атрибутів є простим типом, таким як String, Number, Date або примітив. Значення базового атрибута може відображатися безпосередньо зі значенням стовпця в базі даних.
Типи та конверсії, що підтримуються, залежать від реалізації програми JPA та платформи бази даних. Будь-який базовий атрибут, що використовує тип, який не відображається безпосередньо на тип бази даних, може бути серіалізований до двійкового типу бази даних.
Найпростіший спосіб зіставити базовий атрибут у JPA - це нічого не робити. Будь-які атрибути, які не мають інших анотацій і не посилаються на інші сутності, автоматично відображаються як основні та навіть серіалізуються, якщо не базовий тип. Ім'я стовпця для атрибута буде встановлено за замовчуванням, іменованим тим самим, як ім'я атрибута, як великі регістри.
Анотація @Basic застосовується до об'єктів JPA, а @Column застосовується до стовпців бази даних. Необов'язковий атрибут анотації @Basic визначає, чи може поле сутності бути нульовим чи ні; з іншої сторони,
@Basic
без цього@Column
, тому властивостіoptional
таnullable
властивості існують в обох. Маю рацію?