Hibernate3中generator标签使用

在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:外来主键

  * 主键是外来的,比如拿另一个表的主键来当现表的主键(多表一对一关系)

posted @ 2016-04-16 22:11  hoey94  阅读(217)  评论(0编辑  收藏  举报