將一個(gè) POJO 類注解成一個(gè)實(shí)體 bean ( 持久化 POJO 類 )
@Table
為實(shí)體 bean 映射指定具體的表,如果該注解沒有被聲明,系統(tǒng)將使用默認(rèn)值 ( 即實(shí)體 bean 不帶包名的短類名 )
@Id
將實(shí)體bean中的某個(gè)屬性定義為標(biāo)識(shí)符 ( identifier )
@GeneratedValue
該注解可以定義該標(biāo)識(shí)符的生成策略 ( 默認(rèn)是 AUTO 策略 ) :
AUTO — 可以是 IDENTITY,或 SEQUENCE 或 TABLE 類型,這取決于不同的底層數(shù)據(jù)庫。
TABLE — 使用表保存id值
IDENTITY — 自然遞增
SEQUENCE — 序列
@Transient
被注解成 @Transient 的 getter 方法或?qū)傩裕瑢⒉粫?huì)被持久化,hibernate 會(huì)忽略這些字段和屬性。
@Basic
所有沒有定義注解的屬性,等價(jià)于在其上面添加了 @Basic 注解.。通過 @Basic注解可以聲明屬性的獲取策略 ( fetch strategy )
@Temporal
在核心的 Java API 中并沒有定義時(shí)間精度 ( temporal precision )。因此處理時(shí)間類型數(shù)據(jù)時(shí),你還需要定義將其存儲(chǔ)在數(shù)據(jù)庫中所預(yù)期的精度。
在數(shù)據(jù)庫中,表示時(shí)間類型的數(shù)據(jù)有 DATE,TIME,和 TIMESTAMP 三種精度 ( 即單純的日期,時(shí)間,或者兩者兼?zhèn)?)。 可使用 @Temporal 注解來調(diào)整精度。
@Column
將實(shí)體 bean 中的屬性映射到表中的列。
@Column(
name = "columnName"; (1)
boolean unique() default false; (2)
boolean nullable() default true; (3)
boolean insertable() default true; (4)
boolean updatable() default true; (5)
String columnDefinition() default ""; (6)
String table() default ""; (7)
int length() default 255; (8)
int precision() default 0; (9)
int scale() default 0; (10)
(1) name 可選,列名(默認(rèn)值是屬性名)
(2) unique 可選,是否在該列上設(shè)置唯一約束(默認(rèn)值false)
(3) nullable 可選,是否設(shè)置該列的值可以為空(默認(rèn)值true)
(4) insertable 可選,該列是否作為生成的insert語句中的一個(gè)列(默認(rèn)值true)
(5) updatable 可選,該列是否作為生成的update語句中的一個(gè)列(默認(rèn)值true)
(6) columnDefinition 可選,為這個(gè)特定列覆蓋SQL DDL片段 (這可能導(dǎo)致無法在不同數(shù)據(jù)庫間移植)
(7) table 可選,定義對應(yīng)的表(默認(rèn)為主表)
(8) length 可選,列長度(默認(rèn)值255)
(9) precision 可選,列十進(jìn)制精度(decimal precision)(默認(rèn)值0)
(10) scale 可選,如果列十進(jìn)制數(shù)值范圍(decimal scale)可用,在此設(shè)置(默認(rèn)值0)
環(huán)境 : JDK 1.6,eclipse 3.6,maven 3.0.4,hibernate 3.3.2,junit 4.7,mysql 5.1
注 : 此處配置 pom.xml 是使用 maven 來管理 jar 包,如果你沒有使用 maven,則需手動(dòng)導(dǎo)入相關(guān) jar 包。
注 : 注解可以是在屬性或 getter 方法上進(jìn)行聲明,但不建議混合使用這兩種聲明方式,相反,應(yīng)該盡量避免。另外,由 static 修飾的屬性不會(huì)被持久化到數(shù)據(jù)庫。
在 Junit 測試類中執(zhí)行建表方法 createTable,后臺(tái)打印輸出的 SQL 語句 :
數(shù)據(jù)庫中生成的表結(jié)構(gòu) :

在 Junit 測試類中執(zhí)行插入數(shù)據(jù)的方法 insert,后臺(tái)打印輸出的 SQL 語句 :
數(shù)據(jù)庫中的數(shù)據(jù) :

源碼下載 : hibernate annotation 之 注解聲明.rar
[ 解壓密碼 : http://www.aygfsteel.com/fancydeepin ]