今天再次使用Hibernate枚举映射后,我想知道将它拉伸一点是否是个好主意。
为了解释我的想法来自哪里:当然我们的目标是为我们的应用程序建立一个规范化的数据模型,这通常会导致我们得到很多包含类别,状态或类似数据的表格。通常这些表只有很少的列(通常只有PK和1或2个内容列)和行。而且,这些表格的内容很少变化,有时甚至从未变化
如果我们使用枚举并将它映射到Ordinal或Integer(都使用Hibernate,但我会说任何ORM都可以这样做),那么两种性能都不会更好(连接次数少) )和处理(Java中的枚举可以非常优雅地使用)?
稍微澄清一下:
表格人士
ID:号码
名称:Varchar
RELATIONSHIP_STATUS_ID:数字
表格RELATIONSHIP_STATUS
ID:号码
状态:Varchar
内容人士:
1 | John Doe 1
2 | Mary Poppins | 2
内容关系_STATUS
1 |单
2 |已婚
现在我要转储状态表,将这两个状态放在枚举中并按顺序将其映射到列。
这会是一件有意义的事吗?
如果这种设计在性能方面更好,我特别感兴趣。
答案 0 :(得分:1)
我在表格和枚举之间进行选择的因素如下:
但您仍然可以保留表格,并在代码中使用枚举。当您不知道枚举的实现方式时,只需查看数据库中的数据就可以更清楚了。 0表示已婚,1表示单身并不明显。如果您保留该表仅供参考,您至少可以确定值的含义,并确保无法在数据中插入2或任何其他数字。
另一种方法是使用枚举的名称而不是其序数。它占用的空间更多,效率稍低,但它使数据更清晰,分析更简单。但是,除非添加已检查的约束,否则会失去安全性。