在XXX.hbm.xml映射配置文件中定义<generator class="native"/>标签是为了告诉Hibernate框架使用什么方式去生成主键
class对应的选项:
1.increment:自动增长(short、int...)
* 是指Hibernate框架控制的自动增长,Hibernate框架首先会使用select * from语句查找数据库中最高的主键值,然后在该主键值的基础上再+1。
缺点:会造成线程安全问题
2.identity:自动增长(short、int...)
* 他是数据库控制的自动增长,相当于在创建表示为表的列增加auto_increment
缺点:不能用于oracle,因为oracle中没有auto_increment,oracle中用的是序列
3.sequence:序列(short、int...)
* 可以实现自动增长,但是他只能用于支持序列的数据库,比如oracle
4.uuid:随机字符串(string)
* 他会为主键去生成随机字符串,相应的在创建Hibernate持久化类时要这样写 private String id;
5.native:本地策略
* Hibernate框架会根据本地的数据库自动的选择是用identity或者sequence,
* 换句话说如果你本地使用的oracle,Hibernate会自动选择使用sequence,如果本地使用mysql他会自动选择indentity
6.assigned:手动
* Hibernate不会去维护主键,在往数据库中插入数据时,程序员要自己手动添加一个主键。
7.foreign:外来主键
* 主键是外来的,比如拿另一个表的主键来当现表的主键(多表一对一关系)