我会尝试总结一下。
- 使用 Hibernate 框架进行 ORM(并不真正相关)
这是我的想法:
我希望我的所有模型类(纯粹包含字段的获取/设置,代表我的表)全部继承自空白父类
用于记录检索/存储的单个数据库类,包含许多用于这些方法的方法。对于返回集合的方法,它们返回父对象的类型,并在检索时转换为正确的类类型
小例子
父类(父对象)
public class DataModel {
}
子类
public class A extends DataModel {
private String name;
private String message;
public A (String name) {
this.name = name;
}
public String getMessage() {
return message;
}
public String getName() {
return name;
}
public void setMessage(String message) {
this.message = message;
}
public void setName(String name) {
this.name = name;
}
}
数据库类
public class Database {
public DataModel returnSingleRecord() {
//eventually have an enum as a param to determine what type of child object of DataModel they would like returned
//data retrieval here etc
A a = new A("ashley");
return a;
}
}
使用示例
public class MainController {
public static void main(String[] args) {
Database r = new Database();
A a = (A) r.returnSingleRecord();
System.out.println(a.getName());
}
}
我将总共有 12 个与 A 类似的类。最终我的计划是构建一个 Enum 类,每个返回集合的方法都将接受一个 Enum 值,方法中的 switch 语句将确定什么返回对象,例如 A、B 或 C。
这是个好主意吗?老实说,对于这个项目来说,这似乎是一个显着减少冗余代码并将所有数据库方法减少到 10 个以下的好方法。只需一个"is"似乎就足以作为答案,似乎好得令人难以置信:)。
编辑:只是要注意,如果我要将数据传递到存储方法中,我必须使用 DataModel 作为类型和 instanceof 来确定类类型,这可以在方法中完成,所以看起来仍然是一个好主意.
EDIT2:得出的结论是,这是一个好主意,但是对于返回特定信息,例如在日期之间,一些扩展数据库的类将是最合适的选择。
最佳答案
是的,我认为这是个好主意。我们现在正在为我的一个类使用数据库做一个大项目,我们的模型中有一个名为“BusinessObject”的顶级父类,它有一个 id(GUID),一个 boolean 值 hasInDatabase(以了解是否保存需要是插入或更新)和脏 boolean 值(每当您调用 set 方法时,它都会将该 boolean 值设置为 true 以了解该对象是否与数据库中的不同。事实证明,这非常有帮助。我们'我们还编写了一个非常有用且通用的数据访问对象,用于将数据输入和输出数据库。不过,我知道框架可以处理大部分此类内容。无论如何,您的计划对我来说听起来不错:)
关于Java继承设计思想 - 求指教,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9762847/