主键类型:int vs long

我知道有些软件商店已经通过使用int类型作为持久化类的主键而被烧毁。 话虽这么说,并非所有的表都增长了20亿。 事实上,大多数人没有。

那么,你们是否只为那些映射到潜在大表的类或者每个持久类只使用一致的类来使用long类型? 什么是行业共识?

我会暂时搁置这个问题,以便您与我们分享您的成功/恐怖故事。

即使表不会变得超大,但是具有高周转率,即如果频繁地删除/插入行,则长可以是有利的。 当表格保持较小时,您的自动生成/顺序唯一标识符可能会增加到一个较大的数字。

我通常使用Long,因为在我的大多数项目中性能优势都不明显,但是由于溢出导致的错误会非常明显!

这并不是说Int不是其他人的场景的更好选择,例如数据处理或复杂的查询系统。 只需清楚风险/收益以及它们如何影响您的特定项目。

我不知道“被烧”。 当你需要时,从int变为long并不困难。 转换在SQL中是直接的,然后它只是在客户端代码中进行搜索和替换(或者在持久层中进行更改,然后编译并查看有什么中断。)您正在从一个整数类型转移到另一个整数类型,所以你不必担心微妙的转换问题或截断..

从浮动到双重将会更加艰难。

因为Int对于Select / Sorts来说总是更快。

我使用Integer作为我的代理键,除非我需要将它们作为其他东西。 如果您不需要Long,则无需始终使用Long。

(我通常在针对Oracle 10g或MySQL 5.x数据库运行的项目中使用JPA / Hibernate。)