一、什麼是映射
在上一篇文章中 新手上路之Hibernate:第一個Hibernate例子,通過一個例子瞭解了什麼是Hibernate。而其中最重要的就是通過User.hbm.xml來配置映射。這裏所說的映射就是對象關係映射:將對象數據保存到數據庫中,同時可以將數據庫數據讀入對象中,開發人員只對對象進行操作就可以完成對數據庫數據的操作。
二、什麼是基本映射
知道了什麼是映射,那麼我們先來看一下最基本的映射關係——基本映射,即根據表結構創建相應實體類
例如:還是以Mysql數據庫爲例,進行說明。有如下一張表:
建立相應的實體類:User
public class User {
private String id;
private String username;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String userName) {
this.username = userName;
}
}
對於Hibernate來說,最重要的就是配置文件,即還需要一個User.hbm.xml文件
<hibernate-mapping>
<class name="com.example.hibernate.User" table="t_user">
<id name="id">
<generator class="uuid"/>
</id>
<property name="username"/>
</class>
</hibernate-mapping>
其他部分的代碼參照上一篇文章即可。
三、建立User實體類的一些原則
1、實現無參的默認的構造函數
2、提供一個標識
3、建議不要使用fianl修飾實體類
4、建議爲實體類生成setter和getter方法
對於第3條建議,如果使用了fianl關鍵字,那麼延遲加載(load)將會無效。具體含義將會在下一篇文章中給出實例。
四、HIbernate主鍵生成策略
在上面User.hbm.xml配置文件中有一個標籤:<generator>。它表示的是主鍵生成策略。主鍵生成策略必須配置,用來爲該持久化類的實例生成唯一的標識。它有如下幾種策略
uuid: 用一個128-bit的UUID算法生成字符串類型的標識符,這在一個網絡中是唯一的(使用了IP地址),UUID被編碼爲一個32位16進制數字的字符串,它的生成是由Hibernate生成,一般不會重複UUID包含:IP地址,JVM的啓動時間,系統時間和一個計算器值。
identity:MySql數據庫中自增長
Sequence:Oracle數據庫自增長
native:根據底層數據庫能力選擇identity、sequence中的一個。
assigned:手動分配主鍵.<generator>沒有指定時的默認生成策略
foreign:使用另外一個相關聯的對象的標示符。通常和<one-to-one>配合使用
五、總結