grails何时使用枚举vs数据库查找表

时间:2013-09-26 21:16:37

标签: grails gorm

我正在寻找应用程序的末尾,并且有25个查找表。我的一些域类有15个表引用作为属性(一对一)。现在我记得/了解到我可以使用枚举代替。我确信我可以将一堆查找表重构为枚举类。但是,使用枚举与查找表的最佳做法是什么?关于我的应用场景的一些事情可能有助于答案:

  1. 只有一位开发人员(我)
  2. 这是一个基于网络的应用程序
  3. 它不会是一个使用频繁的应用程序
  4. 当呈现当前具有15个查找的域类的视图时,将需要加载所有这些查找以在视图中显示数据。 (15加入)
  5. 查找将缓存在内存中。
  6. 与域类的查询关系都是一对一的
  7. 查找中的数据很少会改变
  8. 查找表中的某些值是罗嗦的,例如:“照顾动物”
  9. 有些查询有很多记录。示例:一个查找是美国州。另一个是一个人的职业。

2 个答案:

答案 0 :(得分:5)

我认为最明显的答案是将Enums用于不会发生变化的事情。像一周中的几天, 或太阳系中的行星 - 好吧,有时候你认为不会改变实际改变,但是那很好 - 快速更新,你再好几年了。

但是当您处理的数据肯定会随着时间的推移而变化时,通常会将其存储在数据库中。对表的更改不需要更改代码和重新部署。另外,为这些添加管理界面会很好 - 而且脚手架屏幕应该快速而简单。

答案 1 :(得分:1)

这只是我的意见。我不认为这里有一个“正确”的答案。

如果它存储在数据库中,我使用查找表。它更灵活,基于一些东西,应该更高性能。虽然您必须执行连接查询,但可以通过启用二级缓存来减轻这种影响。 cache: true在你的映射中。

使用Enum而不是查找时要记住的一件事是,不再有单独的表的外键,因此您无法保证值在数据库级别的列表中。此外,如果您需要根据Enum进行查询,现在通常是字符串比较而不是数字比较。