新手上路之Hibernate(二):基本映射以及一些原則與主鍵生成策略

一、什麼是映射

在上一篇文章中 新手上路之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>配合使用

五、總結

概括一下Hibernate的基本映射就是:
實體類——對應了——數據庫中表、實體類中的屬性——對應了——表中字段。



發佈了108 篇原創文章 · 獲贊 59 · 訪問量 106萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章