我正在使用 Hibernate。它很好用。但是,假设我有一个对应于数据库表的类,其中只有 getter 和 setter 以及 toString 等方法。现在我想添加一些更多的方法来帮助目的,例如,假设我想获得带有一些添加的描述文本的创建日期,如下所示。
public class Client {
private long id;
private Calendar creationDate;
protected String password;
public long getId() {
return id;
}
@SuppressWarnings("unused")
private void setId(long id) {
this.id = id;
}
public Calendar getCreationDate() {
return creationDate;
}
public void setCreationDate(Calendar creationDate) {
this.creationDate = creationDate;
}
..
.. some other getters and setters that corresponding to SQL columns
//Here I would like to have some help methods. Is it recommended to put it here?
public String getCreationDateInSecs() {
return "Date in secs: " + creationDate.getTimeInMillis * 1000;
}
}
问题是:我应该把这个方法放在哪里?
我应该将它添加到与值对象相同的类中还是应该将它放在其他地方?如果您明白我的意思,我想知道最佳实践 =)
最好的问候
最佳答案
Bozho 基本上概述了两种可能的方法:丰富模型 和贫血模型,并建议采用更面向对象的丰富模型。我在这里提倡贫血的方法。
您描述的功能看起来像是表示层的职责。我觉得放在UI相关的类中会更好,而不是放在领域模型中。
只要逻辑简单,放到领域模型中看起来无害
return "Date in secs: " + creationDate.getTimeInMillis * 1000;
但是,假设您有一个额外的要求来返回本地化的描述。您必须将对本地化工具的依赖项添加到您的领域模型,这会增加代码的耦合度。
因此,最好将不同层的职责分开。
关于java - Hibernate设计模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764277/