• Hibernate框架的主键生成策略


      在Hibernate中,id元素的<generator>子元素用于生成持久化类的对象的唯一标识符,也就是主键。Hibernate框架中定义了许多主键生成策略类,也叫生成器类。所有的生成器类都实现了org.hibernate.id.IdentifierGenerator接口。通过实现IdentifierGenerator接口来创建自己的生成器类。Hibernate框架提供了许多内置的生成器类:

    • assigned
    • increment
    • sequence
    • hilo
    • native
    • identity
    • seqhilo
    • uuid
    • guid
    • select
    • foreign
    • sequence-identity

    1、assigned

     如果没有使用<generator>元素,assigned是默认的生成器策略。在这种情况下,应用程序为对象分配ID。

    2、increment

    当没有其他进程将数据插入此表时,它才会生成唯一的ID。它生成short,int或long型标识符。第一个生成的标识符通常为1,然后每次递增为1。

    3.、sequencce

      它使用数据库的顺序序列。如果没有定义序列,它会自动创建一个序列。在Oracle数据库的情况下,它将创建一个名为HIBERNATE_SEQUENCE的序列。在DB2、SAP DB、Postgre SQL 或McKoi的情况下,它使用序列(sequence),但在interbase中使用生成器。使用sequence类型时,<generator>元素中药使用<param>子元素指定序列名称。

    ........
        <id...>
            <generator class="sequence">
                    <param name="sequence">h_test</param>
            </generator>
        </id>
    ........
    

    4.hilo

    它使用高低算法来生成short,int和long类型的id。

    5、native

    它使用标识、序列或希洛取决于数据库供应商。

    6、indentity

      它用于Sybase、Mysql、MS SQL Server、DB2和Hypersonic  SQL 支持id列。返回的ID类型为short、int或long。 

    7、seqhilo

      它在指定的序列名称上使用高低算法。返回的ID类型为short、int和long。

    8.uuid

      它使用128位UUID算法生成id。返回的ID是String类型,在网络中是唯一的(因为使用了IP)。UUID以十六进制数字标识,长度为32。

    9、guid

      它使用由字符串类型的数据库生成的GUID。它适用于MS SQL Server  和MySQL。

    10、select

      它使用数据库触发器返回主键。

    11、foreign

      它使用另一个关联对象的id,主要用于一对一关联。 

    12、sequence-identity

      它使用特殊的序列生成策略。仅在Oracle 10g驱动程序中支持。

    备注:hilo和seqhilo生成策略的高低算法即hi/lo算法。hi:高值------从数据库取得的那个值;lo:低值------hibernate自动维护,取值1到max_low;max_low:映射文件中配置的那个值。

      

  • 相关阅读:
    spring mvc---web.xml
    javascript:;与javascript:void(0)使用介绍
    JVM的内存区域划分
    获取配置文件内容
    spring获取webapplicationcontext,applicationcontext几种方法详解
    Spring MVC 中 HandlerInterceptorAdapter的使用(拦截器)
    google开发工具指南
    深克隆
    IO优化
    UML类图
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7764428.html
Copyright © 2020-2023  润新知