gpt4 book ai didi

java - 生成类型 IDENTITY 是如何工作的?它如何知道下一个要插入的主键是什么

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:11 24 4
gpt4 key购买 nike

当将实体持久化到数据库中时,生成类型 IDENTITY 如何知道要插入数据库的下一个整数是什么?在多线程应用程序(java)中,两个线程不可能获得实体的相同主键?

最佳答案

对于 @Id 属性,根据 this documentation ,

There are several strategies for generating unique ids. Some strategies are database agnostic and others make use of built-in databases support. JPA provides support for several strategies for id generation defined through the GenerationType enum values: TABLE, SEQUENCE and IDENTITY.

当使用IDENTITY策略时,数据库会自动分配下一个值。

 @Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;

通常,在这种情况下,列的类型为自动递增

请注意,ID 不是在 Java 代码中生成的,而是由底层数据库分配的 - 数据库是为处理多个连接而构建的,其中用户可以在每个连接中插入一条记录。

在 Java 方面,每个线程将使用一个连接 - 通常此类代码使用连接池并从连接池借用一个连接 - 因此本质上是线程安全的。

根据 this documentation ,

Identity sequencing uses special IDENTITY columns in the database to allow the database to automatically assign an id to the object when its row is inserted. Identity columns are supported in many databases, such as MySQL, DB2, SQL Server, Sybase, and PostgreSQL. Oracle does not support IDENTITY columns but its is possible to simulate them using sequence objects and triggers.

关于java - 生成类型 IDENTITY 是如何工作的?它如何知道下一个要插入的主键是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com