目前我正在评估带有 ORM 层的 Web 框架,我偶然发现了一个有趣的问题。我在具有不同数据库的 Java EE (EJB3/JPA) 应用程序中使用了带有 ID 列的表。在 SAPDB 中,我可以定义一个序列并使用 jpa 序列生成器注释来处理它,就像我之前在 oracle 数据库上所做的那样。当我切换到 SQL Server 2005 时,我突然不得不将整个内容替换为 IDENTITY 注释,因为这显然是 SQL Server 处理 id 生成的方式。我有点失望 JPA 没有给我一个以上的抽象,我想这不是我在使用不同数据库时会遇到的唯一限制。
现在我的问题是:例如,我在 web2py 中读到过,所有表都必须更改为使用 auto_increment 索引。它是否也支持序列生成器或标识列?其他 Web 框架呢?他们是否允许我跨多个遗留数据库移植我的应用程序?也就是说,除了标识列和字符串的数据类型定义之间的细微差别之外,表定义是相同的(我记得在那里更改了创建语句,但我不记得到底需要什么)
获取 ID 也有区别 - 使用序列生成器,您可以在提交之前访问生成的 ID,使用 MySQL 中的 auto_increment,afaik,您不能。