Hibernate配置文件

原文鏈接:Hibernate配置文件


通過配置文件(hibernate.propertieshibernate.cfg.xml)和映射文件(.hbm.xml)把java對象或持久化對象(Persistent Object,PO)映射到數據庫中的數據表,
然後通過操作PO,對數據表中的數據進行增,刪,改,查等操作.

Hibernate配置文件主要用來配置數據庫連接參數,例如數據庫的驅動程序URL,用戶名,密碼等。
    兩種格式:hibernate.propertieshibernate.cfg.xml
    一般情況下,hibernate.cfg.xmlHibernate的默認配置文件。


1 hibernate.properties


Hibernate-3.1etc目錄下有一個hibernate.properties模板。該配置模板文件定義了連接各種數據庫所需要的參數。需要使用hibernate.properties時,修改該模板即可。該模板文件中每一個配置項前面的“#”是註釋符號。


2hibernate.cfg.xml

除了要定義Hibernate的各項屬性,還要定義程序中用的映射文件(xxx.hbm.xml)。一般情況下是hibernate的默認配置文件。


hibernate.cfg.xml配置文件

<?xmlversion='1.0'encoding='UTF-8'?>

<!DOCTYPEhibernate-configurationPUBLIC

"-//Hibernate/HibernateConfiguration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->

<hibernate-configuration>

<session-factory>

<propertyname="connection.username">sa</property>

<propertyname="connection.url">

jdbc:sqlserver://localhost:1433;databaseName=hbDB

</property>

<propertyname="dialect">

org.hibernate.dialect.SQLServerDialect

</property>

<propertyname="myeclipse.connection.profile">hbDB</property>

<propertyname="connection.password">sa</property>

<propertyname="connection.driver_class">

com.microsoft.sqlserver.jdbc.SQLServerDriver

</property>

<propertyname="show_sql">true</property>

<property key="hibernate.connection.autocommit">false</property>

<mappingresource="cn/Customers.hbm.xml"/>

</session-factory>

</hibernate-configuration>

hibernate.cfg.xml配置文件屬性

屬性

說明

connection.username

指定連接數據庫的用戶名

connection.url

指定連接數據庫的URL

dialect

用於配置hibernate使用的不同的數據類型。如Oracle、DB2、MS SQL Server、MySQL等。

myeclipse.connection.profile

數據庫的配置文件

connection.password

指定連接數據庫的密碼

connection.driver_class

指定數據庫的驅動程序

show_sql

若爲true,表示程序在運行時,在控制檯輸出SQL語句。



mapping

數據庫表和實體的映射信息要在另外的映射文件中定義,但要在配置文件中聲明。

實體類

Customers實體類要實現implemetns java.io.Serializable接口。

packagecn;

publicclassCustomersimplementsjava.io.Serializable {

privateIntegerid;

privateStringname;

privateIntegerage;

publicInteger getAge() {

returnage;

}

publicvoidsetAge(Integer age) {

this.age= age;

}

publicInteger getId() {

returnid;

}

publicvoidsetId(Integer id) {

this.id= id;

}

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name= name;

}

}

映射文件

另外,還要告訴Hibernate實體類Customers映射到數據庫的哪個表,以及哪個屬性對應數據庫中的哪個字段。

Customers.hbm.xml

<?xmlversion="1.0"encoding="utf-8"?>

<!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

Mappingfile autogenerated by MyEclipse Persistence Tools

-->

<hibernate-mapping>

<classname="cn.Customers"table="Customers"schema="dbo"catalog="hbDB">

<idname="id"type="java.lang.Integer">

<columnname="ID"/>

<generatorclass="identity"/>

</id>

<propertyname="name"type="java.lang.String">

<columnname="Name"length="20"not-null="true"/>

</property>

<propertyname="age"type="java.lang.Integer">

<columnname="Age"not-null="true"/>

</property>

</class>

</hibernate-mapping>

1<classname="cn.Customers"table="Customers"schema="dbo"catalog="hbDB"通信dynamic-update="false"dynamic-insert="false"mutable="true"></class>

每一個<class>節點配置一個實體類的映射信息。

(1name屬性:對應指定持久化實體類:Customers

(2table屬性:對應數據庫表的名字。

(3schema屬性:

(4catalog屬性:

(5)dynamic-update:若爲false,表示當保存一個實例時,會動態生成update語句,只有該實例中的字段取值變化,纔會把它包含到insert語句中。默認值爲true。

(6)dynamic-insert:若爲false,表示當插入一個實例時,會動態生成inset語句,只有該實例中的字段取值不爲null時,纔會把它包含到insert語句中。默認值爲true。

(7)mutable:若爲false,等價於所有的<property>元素的update屬性爲false,表示整個實例不能被更新。默認爲true。

2<idname="id"type="java.lang.Integer">

<columnname="ID"/>

<generatorclass="identity"/>

</id>

<id>節點用於定義實體的標識屬性(對應數據庫表的主鍵)

(1)name屬性:對應實體類的屬性。

(2)type屬性:指定hibernate映射的數據類型。對應Java數據類型。

(3)column屬性:通過name屬性指定其對應的數據庫表的主鍵。

(4)generator屬性:指定主鍵的生成策略。

3<propertyname="name"type="java.lang.String"update="true"insert="true">

<columnname="Name"length="20"not-null="true"/>

</property>

與<id>節點類似,但不能包括<generator>節點。

(1)name屬性:指定持久化類的屬性。

(2)type屬性:指定hibernate映射的數據類型。對應Java數據類型。

(3)column屬性:通過name屬性指定其對應的數據庫表的字段名。

(4)length屬性:通過name屬性指定其對應的數據庫表的字段名的長度。

(5)not-null屬性:通過name屬性指定其對應的數據庫表的字段名是否爲空。

(6)update:若爲false則在更新數據時,不會更新該字段。默認爲true.即更新。

(7)insert:若爲false則在插入數據時,不會插入該字段。默認爲true.即插入。

<column>元素的屬性

Name

指定持久化類的屬性。

length

指定段長度

not-null

指明字段是否爲空。默認爲false。

unique

指明字段是否具有唯一索引。默認爲false。

unique-key

爲多個字段設定惟一約束

foreign-key

指明一個外鍵的名字,它是爲關聯生成的。

sql-type

設定字段的SQL類型。

check

設定SQL檢查約束。

在做唯一外鍵關聯的時候都要用到property-ref="readTypeName"

many-to-one加個屬性,這個屬性默認是指向主鍵的,把它改爲主表的關聯字段


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章