4

我目前正在做一个项目,我将数据库信息转换为 java 对象,我很好奇我应该如何在 java 端表示/命名对象和变量。

例如,如果我将包含有关狗的信息的名为 Dog 的表(例如:Column:BREED_C, NAME_C, OWNER_C, DOGID_D, HAS_RABIES_I等)转换为具有相应变量的名为 Dog 的 java 对象,我是否应该遵循 java 命名约定,例如BreedCor 使用Breed_C,甚至是BREED_C这样两个系统之间差异不大?

4

4 回答 4

6

如果使用 Java,请使用 Java 命名约定。

听起来您的代码应该负责将数据库层从应用程序的其余部分抽象出来,因此没有理由通过使用与数据库列完全相同的名称命名 Java 变量来公开数据库表示。

于 2012-05-08T16:27:35.723 回答
1

我猜 C、D 和 I 是列的类型,这在 Java 中不是必需的,因为您有字段和 getter/setter 的类型。

这开始说,尽可能使用Java lowerCamelCase 约定。

所有著名的 Java 数据库抽象项目 (JPA) 都采用这种方式。

于 2012-05-08T16:32:19.660 回答
1

根据 Java 编程语言的代码约定,表示类的名称

类名应该是名词,大小写混合,每个内部单词的第一个字母大写。尽量保持你的类名简单和描述性。使用完整的单词——避免使用首字母缩略词和缩写词(除非缩写词比长格式更广泛地使用,例如 URL 或 HTML)。

和变量的名称

除变量外,所有实例、类和类常量都是大小写混合,首字母小写。内部单词以大写字母开头。

您可以使用此方法将database名称转换为Java名称。

public static String toJavaFieldName(String name) { // "MY_COLUMN"
    String name0 = name.replace("_", " "); // to "MY COLUMN"
    name0 = WordUtils.capitalizeFully(name0); // to "My Column"
    name0 = name0.replace(" ", ""); // to "MyColumn"
    name0 = WordUtils.uncapitalize(name0); // to "myColumn"
    return name0;
}

public static String toJavaClassName(String name) { // "MY_TABLE"
    String name0 = name.replace("_", " "); // to "MY TABLE"
    name0 = WordUtils.capitalizeFully(name0); // to "My Table"
    name0 = name0.replace(" ", ""); // to "MyTable"
    return name0;
}

这种方法使用Apache Commons Lang

于 2012-05-08T16:37:24.697 回答
0

更好的是使用Java约定,所以breedC应该是你的选择。如果您使用的是 JPA,@Column(name="BREED_C")则在breedC 字段上添加可以使加入这两个系统的技巧。

编辑:以您的案例为例:

@Table(name="DOG")
public class Dog {
    @Column(name="BREED_C")
    private String breedC;
}

如果字段名称与列名称匹配,则不需要那些注释,但如果它们不同,则根据您的情况,您需要放置它们。但前提是您使用的是 JPA 之类的东西。

于 2012-05-08T16:29:44.003 回答