Hibernate---實體配置(對映)檔案詳解 例如:User.hbm.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- ORM元資料 表物件關係對映檔案 。 package : 配置該配置檔案中類所在的包. -->
<hibernate-mapping package="com.itheima.a_hello" >
<!-- class: 配置實體與表的關係
name : 填寫實體的完整類名
table: 與實體對應表的名稱
dynamic-insert:動態插入 預設值是false
true=>如果欄位值為null,不參與insert語句
(例子:值為false 把使用者名稱新增到表中,密碼也會自動儲存到表中,參與insert語句)
dynamic-update:動態更新 預設值"false"
true=> 沒改動過的屬性,將不會生成到update語句中 -->
<class name="User" table="t_user" >
<!-- id: 配置實體與表中 id對應
name: user物件中標識主鍵的屬性名稱
column: 主鍵在表中的列名
length: 列的資料長度
unsaved-value(不常用): 指定主鍵為什麼值時,當做null來處理.
access(強烈推薦不要用):field 那麼在操作屬性時,會直接操作對應的欄位而不是get/set方法 -->
<id name="id" column="id" length="255" >
<!-- generator:主鍵生成策略. 取值有7個。
1.increment 資料庫自己生成主鍵. 先從資料庫中查詢最大的ID值,將ID值加1作為新的主鍵
2.identity 依賴於資料的主鍵自增功能
3.sequence 序列,依賴於資料中的序列功能(Oracle).
4.hilo(純瞭解,永遠用不到) : Hibernate自己實現序列的演算法,自己生成主鍵. (hilo演算法 )
5.native 自動根據資料庫判斷,三選一. identity|sequence|hilo
6.uuid 生成32位的不重複隨機字串當做主鍵
7.assigned 自己指定主鍵值. 表的主鍵是自然主鍵時使用. -->
<generator class="uuid"></generator>
</id>
<!-- property : 實體中屬性與表中列的對應
name : 實體中屬性名稱
column : 表中列的名稱
length : 資料長度
precision: 小數點後的精度
scale: 有效位數
insert(一般不用): 該屬性是否加入insert語句.
update(一般不用): 該屬性是否加入update語句.
not-null : 指定屬性的約束是否使用 非空
unique : 指定屬性的約束是否使用 唯一 -->
<!--
type: 表達該屬性的型別
可以用三種方式指定屬性
java型別 資料庫型別指定 Hibernate型別指定
java.lang.String varchar string -->
<property name="name" column="name" update="true" type="string" ></property>
<property name="password" column="password"></property>
<property name="sal" column="sal" precision="2" scale="3" ></property>
</class>
</hibernate-mapping>
type: 三種方式指定屬性 --------- java型別 Hibernate型別指定 資料庫型別指定
Java資料型別 |
Hibernate資料型別 |
標準SQL資料型別 |
byte、java.lang.Byte |
byte |
TINYINT |
short、java.lang.Short |
short |
SMALLINT |
int、java.lang.Integer |
integer |
INGEGER |
long、java.lang.Long |
long |
BIGINT |
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) |
boolean、java.lang.Boolean |
boolean |
BIT |
java.lang.String |
string |
VARCHAR |
boolean、java.lang.Boolean |
yes_no |
CHAR(1)('Y'或'N') |
boolean、java.lang.Boolean |
true_false |
CHAR(1)('Y'或'N') |
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 |
byte[] |
binary |
VARBINARY、BLOB |
java.lang.String |
text |
CLOB |
java.io.Serializable |
serializable |
VARBINARY、BLOB |
java.sql.Clob |
clob |
CLOB |
java.sql.Blob |
blob |
BLOB |
java.lang.Class |
class |
VARCHAR |
java.util.Locale |
locale |
VARCHAR |
java.util.TimeZone |
timezone |
VARCHAR |
java.util.Currency |
currency |
VARCHAR |