可以使用以下任一方法在JPA中定义枚举
@Enumerated(EnumType.ORDINAL)
要么
@Enumerated(EnumType.STRING)
我想知道这两个定义的优缺点是什么?
我听说ORDINAL的性能比EclipseLink的STRING更好(更快)。 真的吗?
我总是去STRING。
STRING
速度很少是最重要的问题-可读性和可维护性 更为 重要。
我使用STRING它是因为手动检查数据库中的行要容易得多,但更重要的是,我可以做两件事,而无需接触数据库,ORDINAL无法处理:
ORDINAL
这两个更改都将更改数据库中已在使用的枚举的序数值,从而在使用时破坏现有数据ORDINAL。
如果更改枚举值(不是很常见),则处理起来很简单:
UPDATE table SET enum_column = 'NEW_ENUM_NAME' where enum_column = 'OLD_ENUM_NAME';