【问题标题】:naming conventions when doing O/R mapping进行 O/R 映射时的命名约定
【发布时间】:2010-10-30 19:18:33
【问题描述】:

我正在将我的数据库表映射到我的 java 对象。通常我以复数形式命名我的表,因为保存书籍信息的表称为 BOOKS。然而,java 对象代表一本书,应该称为 Book。 AUTHORS/Author 等也是如此。

另一方面,给域对象和表赋予相同的属性有点简单。

人们是否遵循某种命名约定?我想这适用于一般应用程序,而不仅仅是在进行 O/R 映射时。

【问题讨论】:

    标签: java database jpa orm


    【解决方案1】:

    你最初的想法是正确的。

    对象应该是单数的,因为每个对象都是独立的。

    表格应该是复数,因为表格包含所有内容。

    查看 Ruby on Rails 中内置的命名约定,它们是相关的。

    【讨论】:

    • 我正在输入与此非常相似的响应。在 Web 世界中,Ruby on Rails 是处理 ORM 的标准,因此在那里寻找答案是一个很好的建议。 +1 :-)
    • 您可能会争辩说表名应该是单数,因为每一行代表实体的一个实例。
    • @GreenieMeanie - 我选择用复数命名表是因为希望我的 SQL 更自然地阅读。对我来说,“Select * from Persons where ...”比“Select * from Person where ...”读起来更自然。 YMMV。
    • 复数表名也会导致 sql 看起来像 "where users.email = " 或 "where accounts.value in (x,y,z)" 。此外,“select user.name, user.email from user”比“select users.name, users.email from users”更好读
    • @GreenieMeanie 您正在混合术语行和表。是的,如果我们谈论的是一行,那么名称应该是 Person(即 Person 行)。但是,由于一个表包含多行,并且我们正在谈论一个表,所以名称应该是 Persons(即 Persons 表)。
    【解决方案2】:

    我们对表名和 OM 类使用单数。对我来说,这样说更有意义

    person.last_name

    people.last_name,

    无论我是在编写 SQL 还是 Java(当然,它是 person.lastName,但你明白了)。

    【讨论】:

    • 使用单数命名表的好处是您永远不必处理复数问题:'s' 或 'es', -f+'ves' (Car/cars, Bus/busses, Wolf/wolves ),以及许多不规则动物(儿童/儿童、鹅/鹅、驼鹿/驼鹿)。 Rails 有一个特殊的规则系统来处理这个问题,每个项目都可以配置,但我认为这是不必要的麻烦。
    【解决方案3】:

    我在我的 ASP.NET 应用程序中使用 SubSonic,并且在命名 ActiveRecord 类时将其去掉复数形式。与其说是标准,不如说是风格问题。

    我更喜欢使用Invoice 而不是Invoices,因为我通常一次处理一条记录。

    【讨论】:

      【解决方案4】:

      我通常只是确保我在所有地方都使用相同的标准,并且我在命名时使用逻辑名称。

      所以 Books 变成了 DbBooks,Authors 变成了 DbAuthors 等等。

      【讨论】:

        【解决方案5】:

        CJ Date 不使用复数名称,您也不应该使用。唯一的例外是“销售”一词。除此之外,请使用单数名称。

        比较

        user.email = ?和 account.value 在 (1,2,3)

        users.email = ?和accounts.value在(1,2,3)

        或(最坏的选择)

        users.email = ?以及 (1,2,3) 中的 account.values

        【讨论】:

          【解决方案6】:

          jOOQ 从您的数据库模式生成 Java 类。对表格建模的类将被称为与表格本身相同的名称,例如

          • AUTHOR > Author
          • BOOKS > Books

          对对象(或记录)进行建模的类将以“Record”为后缀:

          • AUTHOR > AuthorRecord
          • BOOKS > BooksRecord

          无论您的表叫什么,这都非常直观和通用。见

          http://www.jooq.org

          【讨论】:

            猜你喜欢
            • 2011-01-25
            • 2023-03-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-24
            • 1970-01-01
            • 2017-08-09
            • 1970-01-01
            相关资源
            最近更新 更多