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 : 填寫實體的完整
(例子:值為false 把使用者名稱新增到表中,密碼也會自動儲存到表中,參與insert語句) dynamic-update:動態更新 預設值"false" true=> 沒改動過的屬性,將不會生成到update語句中 -->
<!-- id: 配置實體與表中 id對應 name: user物件中標識主鍵的屬性名稱 column: 主鍵在表中的列名 length: 列的資料長度 unsaved-value(不常用): 指定主鍵為什麼值時,當做null來處理. access(強烈推薦不要用):field 那麼在操作屬性時,會直接操作對應的欄位而不是get/set方法 -->
<!-- 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資料型別(PS:對於不同的DB可能有所差異) |
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 |