天天看點

hibernate.cfg.xml注解和*.hbm.xml配置檔案詳解

hibernate中有兩個常見的配置檔案hibernate.cfg.xml和*.hbm.xml

下面分别詳細介紹下這兩個配置檔案

一、hibernate.cfg.xml配置檔案内容和詳解

<hibernate-configuration>
<session-factory>
	<!-- 配置資料庫連接配接資訊 -->
	<!-- 資料庫驅動 -->
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<!-- url -->
	<property name="connection.url">jdbc:mysql:///hibernatetest</property>
	<property name="connection.username">root</property>
	<property name="connection.password">root</property>
	<!-- 資料庫方言 -->
	<property name="dialect">
		org.hibernate.dialect.MySQL5Dialect
	</property>
	<!-- 是否列印sql語句 -->
	<property name="show_sql">true</property>
	<!-- 格式化sql語句 -->
	<property name="format_sql">true</property>
	<!-- 資料庫更新方式:
		create:每次執行都先将原有的資料表删除,然後建立該表
		create-drop:使用create-drop時,在顯示關閉SessionFactory時,将drop掉資料庫schema(表)
		validate:檢測
		update:如果表不存在則建立,有就不用建立
	 -->
	 <property name="hbm2ddl.auto">update</property>
	<!-- 映射檔案 -->
	<mapping resource="com/test/pojo/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
           

二、User實體類

public class User {
	private int id;
	private String name;
	private String pwd;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
}
           

與User實體類對應的User.hbm.xml配置檔案内容和詳解

<!-- package聲明pojo類所在的包,如果不寫那麼在class中需要指明pojo類所在的包
 	schema指資料庫模式, 一個模式下可以有多張表
 -->
<hibernate-mapping package="com.test.pojo">
	<!-- 
	  class:指映射一個pojo類
	    1) 提供了公共的無參構造方法--通過反射産生對象
	    2)屬性用private修飾,并且生成對應的get/set方法
	    3)類不能用final 來修飾--hibernate會産生代理類(cglib)
	    4)類需要指明辨別
	  name:表示pojo類名
	  table:表示pojo類對應資料庫中的表名;如果不寫預設是類名
	 -->
	<class name="User" table="user">
	<!-- 
	id:表示實體類的辨別(OID),對應資料庫表中的主鍵
	name:指實體類的辨別屬性名
	column:表示對應資料庫的列名,如果不寫則資料庫表中列名和屬性名一緻
	length:表示資料庫表中對應資料類型的長度,如果不寫有預設長度
	type:表示類型如果不寫hibernate可以找到對應pojo類的屬性的類型
	-->
		<id name="id" column="id">
		<!-- 主鍵生成政策
		increment:用于為long,short或者int類型生成唯一辨別。
		隻有在沒有其他程序往同一張表中插入資料時才能使用。在叢集下不要使用
		
		identity:對DB2,MySQL,SQL Server,Sybase和HypersonicSQL的内置辨別字段提供支援。
		傳回的辨別符為long,short或者int類型的。
		
		sequence:在支援序列的資料庫中使用 Orcale
		例:   注:param中的值是資料庫sequence的名稱
		<generator class="sequence">
		  <param name="sequence">user_seq</param>
		</generator>
		
		uuid: UUID被編碼為一個32位16進制數字的字元串
		
		native:根據底層資料庫的能力選擇identity,sequence或者hilo中的一個
		
		assigned: 自己制定主鍵
		 -->
		 
			<generator class="native"></generator> 
		</id>
		<!-- 實體類屬性 
		name:指明pojo類屬性名稱(區分大小寫)
		column:實體類屬性對應的資料庫表列名
		-->
		<property name="name">
		<column name="name"></column>
		</property>
		<property name="pwd"/>
	</class>
</hibernate-mapping>
           

繼續閱讀