Jawaban:
@Basic
menandakan bahwa atribut harus dipertahankan dan pemetaan standar akan digunakan. Ini memiliki parameter yang memungkinkan Anda untuk menentukan apakah atribut akan dimuat secara malas dan apakah itu nullable.
@Column
memungkinkan Anda menentukan nama kolom dalam database tempat atribut tersebut akan dipertahankan.
Jika Anda menentukan satu tanpa yang lain maka Anda mendapatkan perilaku default yang masuk akal, jadi umumnya orang hanya menggunakan satu dengan pengecualian kasus khusus.
Jadi jika kita menginginkan sebuah atribut lazy loading dan untuk menentukan nama kolom kita bisa mengatakannya
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Jika kita membutuhkan default, perilaku non-malas maka hanya @Column
itu sudah cukup.
Selain jawaban @ djna , perlu dicatat bahwa @Basic
harus dibandingkan dengan @OneToMany
, @ManyToOne
dan @ManyToMany
. Hanya satu dari ini yang dapat ditentukan di properti mana pun.
@Column
dan @JoinColumn
dapat ditentukan bersama dengan ini untuk menjelaskan properti kolom database.
Ini adalah dua kumpulan anotasi yang dapat digunakan bersama, tetapi hanya satu anotasi dari setiap kumpulan yang dapat digunakan dalam satu waktu.
Perlu dicatat bahwa Basic dirancang untuk bidang primitif
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
Atribut dasar adalah salah satu di mana kelas atribut adalah tipe sederhana seperti String, Angka, Tanggal atau primitif. Nilai atribut dasar dapat langsung dipetakan ke nilai kolom dalam database.
Jenis dan konversi yang didukung bergantung pada implementasi JPA dan platform database. Atribut dasar apa pun yang menggunakan tipe yang tidak memetakan langsung ke tipe database dapat diserialkan ke tipe database biner.
Cara termudah untuk memetakan atribut dasar di JPA adalah dengan tidak melakukan apa pun. Setiap atribut yang tidak memiliki penjelasan lain dan tidak mereferensikan entitas lain akan secara otomatis dipetakan sebagai dasar, dan bahkan diserialkan jika bukan tipe dasar. Nama kolom untuk atribut akan menggunakan default, dinamai sama dengan nama atribut, sebagai huruf besar.
Anotasi @Basic diterapkan ke entitas JPA, dan dari @Column diterapkan ke kolom database Atribut opsional anotasi @Basic menentukan apakah kolom entitas bisa kosong atau tidak; di samping itu,
@Basic
tanpa@Column
, itulah sebabnya propertioptional
dannullable
ada di keduanya. Apakah saya benar?