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>