JPA 枚举序数 vs 字符串
2022-08-31 20:26:59
可以使用以下任一方法在 JPA 中定义枚举
@Enumerated(EnumType.ORDINAL)
或
@Enumerated(EnumType.STRING)
我想知道这两个定义的优缺点是什么?
我听说ORDINAL比使用EclipseLink的STRING表现得更好(更快)。
这是真的吗?
可以使用以下任一方法在 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';
这可能更有效率,但这是次要的。有一些缺点:ORDINAL
ORDINAL
使用,您无法重命名枚举。STRING
选择其中之一并在整个应用程序中使用它 - 保持一致。
如果你的数据库将被其他客户端/语言使用 - 使用,它更具可读性。STRING