java - JPA枚举序数与字符串

标签 java orm jpa enums eclipselink

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

@Enumerated(EnumType.ORDINAL)

@Enumerated(EnumType.STRING)

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

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

最佳答案

我总是去STRING

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

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

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

这两项更改都会改变数据库中已使用的枚举的序数值,因此如果您使用 ORDINAL,则会破坏现有数据。

如果你改变一个枚举值(不那么常见),处理它很简单:

UPDATE table SET enum_column = 'NEW_ENUM_NAME' where enum_column = 'OLD_ENUM_NAME';

关于java - JPA枚举序数与字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6789342/

相关文章:

ruby-on-rails - 在 ruby​​ on rails 中使用 has_many 和使用数组有什么区别? (MongoDB)

java - 使用 Hibernate Tools 5.1.0.Final 时出现 InspirationTargetException

java - 并行运行多个 JPA 事务

java - 选择条形图类别标签

java - 带有java配置的spring security AuthenticationFailureHandler

orm - 工作单元和存储库模式的实际使用

haskell - MongoDB haskell ORM

java - 如何使用 JPA 和 Hibernate 从表中选择最后插入的 5 条记录

java - 像在 Java 中旋转硬币一样旋转图像

java - 如何打印java txt文件中的列