Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @GeneratedValue(策略=“标识”)与@GeneratedValue(策略=“顺序”)_Java_Hibernate_Jpa - Fatal编程技术网

Java @GeneratedValue(策略=“标识”)与@GeneratedValue(策略=“顺序”)

Java @GeneratedValue(策略=“标识”)与@GeneratedValue(策略=“顺序”),java,hibernate,jpa,Java,Hibernate,Jpa,我刚开始冬眠。我不了解以下两种主键生成策略: 身份 序列 有人能解释一下这两者是如何工作的,它们之间有什么区别吗?引用: 标识排序使用数据库中的特殊标识列,允许数据库在插入对象行时自动为其分配id。许多数据库都支持标识列,如MySQL、DB2、SQL Server、Sybase和Postgres。Oracle不支持标识列,但可以通过使用序列对象和触发器来模拟它们 用简单的英语:在表中最多标记一个ID列作为标识。数据库引擎将自动为您输入下一个可用值 以及: 序列对象使用特殊数据库对象生成ID。序列

我刚开始冬眠。我不了解以下两种主键生成策略:

  • 身份
  • 序列
  • 有人能解释一下这两者是如何工作的,它们之间有什么区别吗?

    引用:

    标识排序使用数据库中的特殊标识列,允许数据库在插入对象行时自动为其分配id。许多数据库都支持标识列,如MySQL、DB2、SQL Server、Sybase和Postgres。Oracle不支持标识列,但可以通过使用序列对象和触发器来模拟它们

    用简单的英语:在表中最多标记一个
    ID
    列作为标识。数据库引擎将自动为您输入下一个可用值

    以及:

    序列对象使用特殊数据库对象生成ID。序列对象仅在某些数据库中受支持,如Oracle、DB2和Postgres。通常,序列对象具有名称、增量和其他数据库对象设置。每次选择
    .NEXTVAL
    时,序列将按增量递增


    序列更加灵活,稍微复杂一些。在数据库中,在表、触发器等旁边定义一个称为序列的额外对象。序列基本上是命名计数器,您可以在查询中的任何位置使用。

    下面的文章清楚地解释了这两种类型之间的区别