我目前正在开发一个项目,我将数据库信息转换为java对象,我很好奇我应该如何表示/命名java端的对象和变量。
例如,如果我正在转换一个名为Dog的表,其中包含有关狗的信息,例如:
列:BREED_C, NAME_C, OWNER_C, DOGID_D, HAS_RABIES_I
等等,进入一个名为Dog的java对象及相应的变量,我应该遵循java命名约定,例如BreedC
或使用Breed_C
甚至BREED_C
,这样就可以了两个系统之间的差异很小?
答案 0 :(得分:6)
如果使用Java,请使用Java命名约定。
听起来你的代码应该负责将数据库层从应用程序的其余部分抽象出来,所以没有理由通过命名与数据库列完全相同的Java变量来公开数据库表示。 / p>
答案 1 :(得分:1)
我猜C,D和I是列的类型,在Java中不是必需的,因为你有字段和getter / setter的类型。
首先说,尽可能使用Java lowerCamelCase约定。
所有着名的Java数据库抽象项目(JPA)都是这样的。
答案 2 :(得分: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。
答案 3 :(得分:0)
更好的是使用Java约定,因此breedC应该是您的选择。如果你正在使用JPA,那么在breedC字段上添加@Column(name="BREED_C")
就可以加入这两个系统。
编辑:以您的案例为例:
@Table(name="DOG")
public class Dog {
@Column(name="BREED_C")
private String breedC;
}
如果字段名称与列名称匹配,则不需要这些注释,但如果它们不同,则需要将它们放在一起。但是,只有当你使用像JPA这样的东西时。