【发布时间】:2010-10-30 19:18:33
【问题描述】:
我正在将我的数据库表映射到我的 java 对象。通常我以复数形式命名我的表,因为保存书籍信息的表称为 BOOKS。然而,java 对象代表一本书,应该称为 Book。 AUTHORS/Author 等也是如此。
另一方面,给域对象和表赋予相同的属性有点简单。
人们是否遵循某种命名约定?我想这适用于一般应用程序,而不仅仅是在进行 O/R 映射时。
【问题讨论】:
我正在将我的数据库表映射到我的 java 对象。通常我以复数形式命名我的表,因为保存书籍信息的表称为 BOOKS。然而,java 对象代表一本书,应该称为 Book。 AUTHORS/Author 等也是如此。
另一方面,给域对象和表赋予相同的属性有点简单。
人们是否遵循某种命名约定?我想这适用于一般应用程序,而不仅仅是在进行 O/R 映射时。
【问题讨论】:
你最初的想法是正确的。
对象应该是单数的,因为每个对象都是独立的。
表格应该是复数,因为表格包含所有内容。
查看 Ruby on Rails 中内置的命名约定,它们是相关的。
【讨论】:
我们对表名和 OM 类使用单数。对我来说,这样说更有意义
person.last_name
比
people.last_name,
无论我是在编写 SQL 还是 Java(当然,它是 person.lastName,但你明白了)。
【讨论】:
我在我的 ASP.NET 应用程序中使用 SubSonic,并且在命名 ActiveRecord 类时将其去掉复数形式。与其说是标准,不如说是风格问题。
我更喜欢使用Invoice 而不是Invoices,因为我通常一次处理一条记录。
【讨论】:
我通常只是确保我在所有地方都使用相同的标准,并且我在命名时使用逻辑名称。
所以 Books 变成了 DbBooks,Authors 变成了 DbAuthors 等等。
【讨论】:
CJ Date 不使用复数名称,您也不应该使用。唯一的例外是“销售”一词。除此之外,请使用单数名称。
比较
user.email = ?和 account.value 在 (1,2,3)
到
users.email = ?和accounts.value在(1,2,3)
或(最坏的选择)
users.email = ?以及 (1,2,3) 中的 account.values
【讨论】:
jOOQ 从您的数据库模式生成 Java 类。对表格建模的类将被称为与表格本身相同的名称,例如
AUTHOR > Author
BOOKS > Books
对对象(或记录)进行建模的类将以“Record”为后缀:
AUTHOR > AuthorRecord
BOOKS > BooksRecord
无论您的表叫什么,这都非常直观和通用。见
【讨论】: