ihbernate详解(六)常见的映射元素

2017-10-31  本文已影响0人  秀逼

increment标识符生成器

标识符生成器由hibernate以递增的方式为代理主键赋值

<id name="id" type="long" column="ID">
  <generator class="increment"></generator>
</id>

适用范围:

identity标识符生成器

它是由底层数据库来负责生成标识符(记录的主键),它要求底层数据库把主键定义为自动增长的字段类型,例如:在mysql中应该把主键定义为auto increment类型。

<id name="id" type="long" column="ID">
  <generator class="identity"></generator>
</id>

适用范围:

sequence标识符生成器

它是由底层数据库提供的序列来生成标识符

        <id name="id" column="ID" type="long">
            <generator class="sequence">
                <param name="sequence"></param>
            </generator>
        </id>

适用范围:

hilo标识符生成器

由hibernate按照一种high/low算法来生成标识符,他从数据库的特定表的特定字段中获取high值

使用方法:
hilo算法即是id = hi*(max_low+1) + low;low值在0-max_low-1中进行循环,low值每循环一圈,hi值就增加1

适用范围:

native标识符生成器

根据底层数据库对自动生成标识符的支持能力,来自动选择使用identify,sequence,还有hilo标识符生成器。native能自动判断底层数据库系统提供的生成标识符的机制。选择identify还是sequence还是hilo标识符生成器。
使用方法:

<id name="id" type="long" column="ID">
  <generator class="native"></generator>
</id>

适用范围:

主意 :

当Oracle数据库报hibernate_sequence错误的时候,可以创建hibernate-sequence这么一个序列,这样就可以避免报错。

上一篇 下一篇

猜你喜欢

热点阅读