1、assigned 所有的數據庫都適用;
在調用save()方法之前,要對主鍵設置值,不設置報錯;
<generator class="assigned"></generator>
2、increment 按照數據庫的一個順序值來增長;
適用於mysql、oracle、db2、sqlserver、h2等數據庫;
注意: 每次新增前,都會查詢主鍵的最大值;
然后在其基礎上加1,作為新增的主鍵值;
<generator class="increment"></generator>
3、identity 根據底層數據庫的能力,來作為主鍵的自增長策略;
適用於 mysql、db2、sqlserver等;
不適用於oracle數據庫;
<generator class="identity "></generator>
4、sequence 根據底層數據庫支持的能力,來作為主鍵值的生成策略;
適用於oracle、db2數據庫;
不適用於mysql、sqlserver數據庫;
<generator class="sequence">
<param name="property">user5.seq_aa</param>
</generator>
5、native 根據底層數據庫支持的自增長能力,自動選擇hilo、identity、sequence其中的一個來完成該主鍵的自增長;
mysql數據庫中: <generator class="native"></generator> oracle的數據庫中
<generator class="native">
<param name="sequence_name">seq_aa</param>
</generator>
6、uuid 主鍵為varchar類型;
生成16進制 32位的字符串類型;
生成的數據唯一;
適用於mysql、oracle、sqlserver、db2等數據庫;
<generator class="uuid"></generator>
7、foreign : 表關系中 再講;
-- 悲觀鎖: select 列名.... from 表名稱 [where .....] for update;
PersonBean.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">
<hibernate-mapping>
<class name="com.bwf.code.bean.PersonBean" table="person" schema="user5">
<!-- id標簽表示主鍵
name 表示模型bena中的屬性名稱
column 表示表結構中的列名稱
generator 表示主鍵的約束, identity表示主鍵在數據庫中自增長;
-->
<id name="id" type="java.lang.Long">
<column name="pid" sql-type="int"></column>
<generator class="sequence">
<param name="property">user5.seq_aa</param>
</generator>
</id>
<property name="name" column="pname" type="java.lang.String"></property>
<property name="birthday" column="birthday" type="java.lang.String"></property>
<property name="sex" column="sex"></property>
<property name="phone"></property>
</class>
</hibernate-mapping>