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>