標籤:property 枚舉類 bsp private jar包 style turn int 注意
資料庫表名和類名
一致
註解:可寫可不寫;
XML:可寫可不寫; <class name="Student">
不一致
註解: 1 @Table(name="_teacher") 2 public class Teacher ,注意匯入的是 javax.persistence.Table;
XML: <class name="Student" table="_student"> 。
欄位名和屬性名稱
一致
註解:@Basic / 不寫,沒有在欄位上加註解相當於加了@Basic;
XML:如果要在資料庫中進行操作的欄位那就必須要寫,否則資料就不會插入到資料庫中
1 <id name="id"/>2 <property name="name"/>
不一致
註解: @Column(name="_name") public String getName() ,注意匯入的是 javax.persistence.Column;
XML: <property name="name" column="_name"/>
不想儲存在資料庫中的欄位:
註解:匯入 javax.persistence.Transient;
1 import javax.persistence.Transient; 2 3 private String girlName; 4 5 @Transient 6 public String getGirlName() { 7 return girlName; 8 } 9 10 public void setGirlName(String girlName) {11 this.girlName = girlName;12 }
XML:不要持久化的屬性不寫進XML設定檔就可以了
映射日期和時間
註解: 預設是 TIMESTAMP,如果要設定時間精度,有三個可選,DATE只儲存日期(年月日),TIME只儲存時間(時分秒),TIMESTAMP儲存日期和時間:
例子:
1 private Date birthday;2 @Temporal(value=TemporalType.TIMESTAMP)3 public Date getBirthday() {4 return birthday;5 }6 7 public void setBirthday(Date birthday) {8 this.birthday = birthday;9 }
XML:在對應的欄位上對 type 進行配置,
映射枚舉類型
註解:兩種類型 ORDINAL在資料庫中以int儲存,STIRNG以字串儲存
定義枚舉類型:
1 package com.bjsxt.hibernate.model;2 3 public enum ZhiCheng {4 A,B,C5 }
設定職稱為B: 1 t.setZhiCheng(ZhiCheng.B); 如果映射為ORDINAL,資料儲存為0;如果映射為STRING,資料儲存為B。
XML:很麻煩,一般不用。
FAQ:
1、註解指定資料庫欄位的長度?
註解:Column 的 length 配置;
XML:propertye 的 length 配置。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
欄位對應的位置:field 上、方法上。
放在方法上,這樣不會破壞Java的物件導向的封裝性;
best practice:保持field和 get set 方法的一致。
連結: http://pan.baidu.com/s/1caR1ZS 密碼: c24n
jar包:連結: http://pan.baidu.com/s/1pLM4ch9 密碼: q5cp
hibernate基礎配置