gpt4 book ai didi

具有数据库支持最佳实践的 Java 枚举

转载 作者:可可西里 更新时间:2023-11-01 08:35:39 25 4
gpt4 key购买 nike

我已经四处寻找了一些答案,但它们并不能让我满意。我希望这不会重复。

我有一个应用程序,其中的数据应该是常量。这些数据可以在以后修改,所以我目前的方法是使用一个单独的表来包含这个常量,它是从其他表中引用的。例如,该表有一个列 ID 和列值。这张表由一个带有 ID 和 Value 的 Java 对象表示。

当我想比较这个常量时,我​​的问题就来了。比较使用它的 ID 对我来说似乎很难看,所以我虽然使用枚举来比较它们。但这似乎很尴尬,因为我将在用作“类型”的类中使用 ENUM。所以我也在考虑来自 JPA 的 @enumerated 注释......但老实说,我没有看到最好的方法。我可以肯定的是,我绝对希望-以某种方式-将这个常量数据存储在数据库中。

最佳答案

在我的脑海中,我可以考虑以下方法。

  1. 创建enum 并将其名称映射到数据库。这种方法很简单,而且会奏效。它的缺点是DB中的字符串太多。因此,如果更改了枚举元素名称,则必须修复数据库。字符串占用空间。如果您想将其用于查询条件,则此类字段需要建立索引。
  2. 创建 enum 并将其序号映射到 DB。这也很简单,但是即使更改了枚举元素的一个顺序,DB 也需要维护。并且数据库数据的可读性较差。

#1 和#2 都有共同的缺点:实际上数据存储了两次:一次硬编码为枚举。在数据库中两次。如果您必须修改数据,则必须在 2 个地方执行此操作。必须在开发期间进行修改,因为必须重新编译 enum

但是还有其他solution提供所谓的“动态枚举”。看一看。可能此解决方案会对您有所帮助。

关于具有数据库支持最佳实践的 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com