作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经四处寻找了一些答案,但它们并不能让我满意。我希望这不会重复。
我有一个应用程序,其中的数据应该是常量。这些数据可以在以后修改,所以我目前的方法是使用一个单独的表来包含这个常量,它是从其他表中引用的。例如,该表有一个列 ID 和列值。这张表由一个带有 ID 和 Value 的 Java 对象表示。
当我想比较这个常量时,我的问题就来了。比较使用它的 ID 对我来说似乎很难看,所以我虽然使用枚举来比较它们。但这似乎很尴尬,因为我将在用作“类型”的类中使用 ENUM。所以我也在考虑来自 JPA 的 @enumerated 注释......但老实说,我没有看到最好的方法。我可以肯定的是,我绝对希望-以某种方式-将这个常量数据存储在数据库中。
最佳答案
在我的脑海中,我可以考虑以下方法。
enum
并将其名称映射到数据库。这种方法很简单,而且会奏效。它的缺点是DB中的字符串太多。因此,如果更改了枚举元素名称,则必须修复数据库。字符串占用空间。如果您想将其用于查询条件,则此类字段需要建立索引。 enum
并将其序号映射到 DB。这也很简单,但是即使更改了枚举元素的一个顺序,DB 也需要维护。并且数据库数据的可读性较差。 #1 和#2 都有共同的缺点:实际上数据存储了两次:一次硬编码为枚举。在数据库中两次。如果您必须修改数据,则必须在 2 个地方执行此操作。必须在开发期间进行修改,因为必须重新编译 enum
。
但是还有其他solution提供所谓的“动态枚举”。看一看。可能此解决方案会对您有所帮助。
关于具有数据库支持最佳实践的 Java 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13361497/
我是一名优秀的程序员,十分优秀!