【问题标题】:Normalize repeating values in Hibernate - Java规范化 Hibernate 中的重复值 - Java
【发布时间】:2012-04-26 01:37:40
【问题描述】:

我有一个实体的 String 属性,它经常被其他实体重复 - 这将(在传统数据库中)映射到它自己的表。

例如:我可以有一个服装实体,每件衣服都有自己的对象或行。每个项目都会有一个品牌,但这个品牌(字符串)可以被许多其他服装项目重复。 - 它本质上应该是一个多对一映射,尽管品牌本身并不是一个实体,它只是一个字符串。

我将如何在休眠状态下执行此操作?还是我应该为每个品牌创建一个实体并使用 ManyToOne?

任何帮助将不胜感激!

【问题讨论】:

    标签: java hibernate normalize


    【解决方案1】:

    我认为,就database normalization(特别是3NF)而言,如果您希望列具有重复值,则应该将这些值导出到它们自己的表中并具有外键列。这样,如果其中一个值发生变化,您可以一次全部更改。

    这将允许您在 Hibernate 中使用 ManyToOne。

    但是,如果这不可能,我建议使用Enum。

    【讨论】:

    • 如果您使用枚举,则每次添加新品牌时都必须更新代码。赋予品牌它自己的实体可能更有意义。
    • 'ɲeuroburɳ' 说的是真的,枚举不是一个好的选择。到目前为止,我将使用 ManyToOne,尽管我希望有一些与嵌入在实体中的值类型(可嵌入)对象相关的解决方案。
    • 我同意枚举。规范化数据库本身是一个更好的选择。我也考虑过嵌入式对象,但它似乎不太适用于您的问题。 Embedded entites 用于将多个列视为封闭实体持有的单独对象。这不是你真正要问的。
    猜你喜欢
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2014-02-18
    • 2017-05-25
    • 1970-01-01
    • 2016-03-06
    • 2021-03-22
    相关资源
    最近更新 更多