【问题标题】:Best practise for naming conventions for entity fields and database table columns实体字段和数据库表列命名约定的最佳实践
【发布时间】:2011-11-14 11:17:25
【问题描述】:

我正在使用 hibernate 创建实体和数据库表 我对命名约定感到困惑:

举个例子:

我们有一个部门实体如下:

public class Department {

@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "department_id", unique = true, nullable = false)
    @Basic(fetch = FetchType.EAGER)
    private long id;

    @NotBlank(message = "{name.required}")
    @Size(max = 25, message = "{long.value}")
    @Column(name = "department_name", length = 25, nullable = false)
    private String name;

    @Column(name = "department_admin_id", nullable = true)
    private Integer adminId;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "ik_parent_department_id")
    // set the generated column name
    private Department parentDepartment;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "department_id")
    private Set<Employee> employees = new HashSet<Employee>(0);


}

在命名例如 部门管理员 字段时,最好将命名为 department_admin_id 还是 admin_id 那么case(小写/大写)呢?

在命名属性时,您将其命名为departmentAdminId还是adminId

请指教,在这种情况下最好的做法是什么,谢谢。

【问题讨论】:

    标签: java hibernate database-design naming-conventions


    【解决方案1】:

    如果您的表名为department,那么它的所有以department_ 开头的列都没有多大好处。只需打电话给他们idnameadmin_id 等。

    毕竟,你所在班级的成员不是这样前缀的吗?通过位于department 表中,这些列已经与department 具有隐式关系。进一步的解释过于冗长,不需要。

    编辑:
    在java类中,我会使用骆驼案例。对于列名,我会用下划线分隔。大多数数据库对表名和列名不区分大小写。

    【讨论】:

    • 所以你没有为列或属性添加前缀,并且在列中使用骆驼大小写的属性和下划线(但是在列的下部或上部的情况下呢?)
    【解决方案2】:

    我会使用基于 Java 的属性和基于 DB 的列名,所以:

    @Column(name = "FAVORITE_QUOTE")
    private String favoriteQuote;
    

    在 OO 世界中,您使用 Java(驼峰式)约定,同时您保持 DB 约定(大写和下划线链接)。如果您已经生成了数据库架构,则通常需要调整到此架构。

    如果您正在生成架构 - 您不想惹恼您未来的 DBA ;-)

    编辑:我更喜欢使用favoriteQuote 而不是userFavoriteQuite,因为我认为它是多余的。但是,我已经看到很多 DB 约定,其中在列前加上实体名称以某种方式使 DBA 更容易编写查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2012-07-15
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      相关资源
      最近更新 更多