一尘不染

JPA枚举普通vs STRING

java

可以使用以下任一方法在JPA中定义枚举

@Enumerated(EnumType.ORDINAL)

要么

@Enumerated(EnumType.STRING)

我想知道这两个定义的优缺点是什么?

我听说ORDINAL的性能比EclipseLink的STRING更好(更快)。
真的吗?


阅读 223

收藏
2020-12-03

共1个答案

一尘不染

我总是去STRING

速度很少是最重要的问题-可读性和可维护性 更为 重要。

我使用STRING它是因为手动检查数据库中的行要容易得多,但更重要的是,我可以做两件事,而无需接触数据库,ORDINAL无法处理:

  1. 我可以更改枚举的 顺序
  2. 我可以在枚举列表的中间 插入 新的枚举

这两个更改都将更改数据库中已在使用的枚举的序数值,从而在使用时破坏现有数据ORDINAL

如果更改枚举值(不是很常见),则处理起来很简单:

UPDATE table SET enum_column = 'NEW_ENUM_NAME' where enum_column = 'OLD_ENUM_NAME';
2020-12-03