我们可以在没有 JDBC 查询或调用的情况下自动生成主键吗?

Can we generate primary keys automatically without JDBC queries or calls?

我正在尝试在 Hibernate 中自动生成字母数字(例如 TESLA1001)主键。我目前正在使用 Oracle 数据库,所以我有一个 JDBC 调用 my_sequence.NEXTVAL (1002) 来增加数字并附加到前缀 (TESLA)。

我们正在考虑将 MySQL 作为一个选项,但它们不支持序列。因此,我不得不使用 JDBC 调用存储过程来重写自定义 ID 生成技术。

有什么方法可以让我在不使用 JDBC 和数据库相关查询的情况下生成自定义主键的通用实现?所以,将来,如果我需要使用 MSSQL 测试我的应用程序,我只需要更改我的休眠配置,一切正常!

因为您需要一种协调序列号的方法,所以您将始终必须使用集中式序列生成器。字母数字主键在索引方面的性能比 UUID 生成器差。

如果我是你,我会切换到 UUID identifers,它在所有主要 RDBMS 中都是独一无二的和可移植的。