可以在 JPA 中使用任一方法定义枚举
@Enumerated(EnumType.ORDINAL)
或
@Enumerated(EnumType.STRING)
我想知道这两种定义的优缺点是什么?
我听说 ORDINAL 比使用 EclipseLink 的 STRING 性能更好(更快)。
这是真的吗?
最佳答案
我总是去STRING
。
速度很少是最重要的问题 - 可读性和可维护性更重要。
我使用 STRING
是因为手动检查数据库中的行要容易得多,但更重要的是,我可以在不接触数据库的情况下做两件事,即 ORDINAL
无法处理:
- 我可以更改枚举的顺序
- 我可以在枚举列表的中间插入新的枚举
这两项更改都会改变数据库中已使用的枚举的序数值,因此如果您使用 ORDINAL
,则会破坏现有数据。
如果你改变一个枚举值(不那么常见),处理它很简单:
UPDATE table SET enum_column = 'NEW_ENUM_NAME' where enum_column = 'OLD_ENUM_NAME';
关于java - JPA枚举序数与字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6789342/