<!-- XML
文件的聲明
-->
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<!-- hibernate DTD
文件的聲明
-->
<!
DOCTYPE
hibernate-mapping
PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--
映射文件的根節點
-->
<
hibernate-mapping
>
<!--
對象關係映射的開始:
class
元素表示類和數據庫中的表的映射關係。
name
屬性指定持久化類(或者接口)的
Java
全限定名;
table
屬性指定要映射的對應的數據庫表名
-->
<
class
name
=
"org.qiujy.bean.User"
table
=
"user"
>
<!--
持久化類對象的對象標識符
(OID)
和表的主鍵的映射關聯:
name
屬性指定類中做爲
OID
的屬性名;
column
屬性表中主鍵字段的名字;
type
屬性指定
Hibernate
的映射類型
-->
<
id
name
=
"id"
column
=
"id"
type
=
"int"
>
<!--
指定對象標識符生成器:
class
屬性指定生成器的類別名
-->
<
generator
class
=
"native"
/>
</
id
>
<!--
普通屬性的映射:
name
屬性:屬性的名字
,
以小寫字母開頭;
column
屬性:對應的數據庫字段名
type
屬性:
指定
Hibernate
的映射類型
-->
<
property
name
=
"name"
column
=
"name"
type
=
"string"
/>
<
property
name
=
"age"
column
=
"age"
type
=
"int"
/>
</
class
>
</
hibernate-mapping
>
|
Java類型 | Hibernate映射類型 | 標準SQL類型 |
int或java.lang.Integer | integer或int | INTEGER |
long或java.lang.Long | long | BIGINT |
short或java.lang.Short | short | SMALLINT |
byte或java.lang.Byte | byte | TINYINT |
float或java.lang.Float | float | FLOAT |
double或java.lang.Double | double | DOUBLE |
java.math.BigDecimal | big_decimal | NUMERIC |
char或java.lang.Character | character | CHAR(1) |
java.lang.String | string | VARCHAR |
boolean或java.lang.Boolean | boolean | BIT |
boolean或java.lang.Boolean | yes_no | CHAR(1)('Y'或' N') |
boolean或java.lang.Boolean | true_false | CHAR(1)('T'或' F') |
Java類型 | Hibernate映射類型 | 標準SQL類型 | 說明 |
java.util.Date或java.sql.Date | date | DATE | 日期 |
java.util.Date或java.sql.Time | time | TIME | 時間 |
java.util.Date或java.sql.Timestamp | timestamp | TIMESTAMP | 時間戳 |
java.util.Calendar | calendar | TIMESTAMP | |
java.util.Calendar | calendar_date | DATE |
Java類型 | Hibernate映射類型 | 標準SQL類型 | MySQL類型 | Oracle類型 |
byte[] | binary | VARBINARY(或者BLOB) | BLOB | BLOB |
java.lang.String | text | CLOB | TEXT | CLOB |
實現java.io.Serializable接口的任意一個java類 | serializable | VARBINARY(或者BLOB) | BLOB | BLOB |
java.sql.Clob | clob | CLOB | TEXT | CLOB |
java.sql.Blob | blob | BLOB | BLOB | BLOB |
<
id
name
=
"id"
column
=
"id"
type
=
"int"
>
<
generator
class
=
"native"
/>
</
id
>
|
標識符生成器 | 描述 |
increment: | 由hibernate自動以遞增的方式生成標識符,每次增量爲1.適用於代理主鍵. |
identity: | 由底層數據庫生成標識符.數據庫必須支持自動增加字段類型,不便於不一樣數據庫之間的移植.適用於代理主鍵. |
sequence: | Hibernate根據底層數據庫序列來生成標識符.前提是條件是底層數據庫支持序列(如Oracle).適用於代理主鍵. |
hilo: | Hibernate根據high/how算法來生成標識符.適用於代理主鍵. |
seqhilo: | 使用一個高/低位算法來高效的生成long , short 或者 int 類型的標識符,給定一個數據庫序列(sequence)的名字.適用於代理主鍵. |
native: | 根據底層數據庫對自動生成標識符的支持能力,來選擇identity,sequence或hilo.適用於代理主鍵. |
uuid.hex: | Hibernate採用128位的UUID(Universal Unique Identification)算法來生成標識符.UUID算法可以在網絡環境中生成惟一的字符串標識符.但字符串型的主鍵比整型的主鍵佔用更多的數據庫空間.適用於代理主鍵. |
uuid.string: | 使用UUID算法來生成標識符.UUID被編碼爲一個16個字符長的任意ASCII組成的字符串。適用於代理主鍵. |
assigned: | 由Java應用程序負責生成標識符,需在保存數據前完成.適用於天然主鍵. |
……
<
id
name
=
"no"
column
=
"no"
type
=
"int"
>
<!--
指定主鍵生成方式爲
Assigned -->
<
generator
class
=
"assigned"
/>
</
id
>
……
|
……
<composite-
id>
<key-property
name
=
"firstName"
column
=
"firstname"
type
=
"string"
>
<
key-property
name
=
"lastName"
column
=
"lastname"
type
=
"string"
>
</composite-
id
>
……
|