Hibernate-類映射文件中常用屬性的瞭解

我們把User.hbm.xml加了一些擴展來說說常用的屬性的含義:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.pojo.Users">
    <id name="id" type="java.lang.Integer">
        <generator class="native"></generator>
    </id>

    <property name="name" length="20" not-null="true" unique="true" update="false" insert="true"/>
    <property name="email"/>
</class>
</hibernate-mapping>



這裏沒有指定column屬性表示與name值相同

length="20" 如果前臺提交過來的值長度超過20的話Hibernate會拋出異常

not-null="true" 如果前臺提交過來的值是空的Hibernate會拋出異常

unique="true" 如果前臺提交過來的值已經在數據中存在Hibernate會拋出異常(Hibernate會自動去判斷是否在數據庫是有重複數據)

update="false" 表示該字段不參與更新操作(Hibernate不會產生該字段的SQL語句)

insert="true" 表示該字段參與插入操作。

<hibernate-mapping>

<class name="com.pojo.Users">

可以修改成如下表示方法

<hibernate-mapping package="com.pojo">

<class name="Users">

<generator class="native"></generator>是主鍵生成策略,是Hibernate自動生成的。

這裏講解下代理主鍵和業務主鍵的概念



代理主鍵是指與業務無關且能唯一標識數據庫中記錄,一般是數據庫自動生成的,比如mysql可以使用auto_increment,Sql2000可以使用identity生成方式,oracle可以使用sequence生成方式

業務主鍵指業務相關,由用戶指定,且能唯一標識數據庫中的任意一條記錄,也叫自然主鍵



Hibernate可以幫助生成業務主鍵

<generator class="native"></generator>就是一種生成方式,下面我說詳細說下hibernate中業務主鍵的生成方式:



increment:以遞增方式生成OID,每次加1
identiry:由底層數據庫生成OID,條件是數據庫支持自動增加的字段
sequence: hibernate根據底層數據庫的序列來生成OID,條件是數據庫支持序列
hilo:根據high/low算法生成OID,Hibernate根據待定表的字段作爲high值,默認採用hibernate_unique_key表的next_hi值
seqhilo:hibernate3.0出現,根據高氏位算法生成主鍵,需要給頂一個序列。
native:根據數據庫的情況自動選擇OID生成的方式
uuid.hex:採用128位的uuid算法生成OID,佔用空間大
assigned:由JAVA應用程序負責生成主鍵,適用於自然主鍵
發佈了62 篇原創文章 · 獲贊 36 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章