【发布时间】:2017-01-10 01:12:44
【问题描述】:
我有一些简单的域模型来描述数据库中的人员表:
@Entity
@Table(name = "persons")
public class Person {
private int id;
private String firstName;
private String lastName;
private int age;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Column
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我还有一些适用于这个模型的 DAO 类:
class PersonDao {
// getById
// add
// remove
// etc
}
我还有一些服务,可以与这个 PersonDAO 一起使用:
class PersonService {
//
}
在这项服务中,我想使用一些标准(以名字为例)从 DAO 获取“COUNT(*)”、“MAX(age)”、“MIN(age)”。 这样做的正确方法是什么?
- 在 DAO 中定义 3 种不同的方法(如 getCount(firstname)、 getMin(firstname), getMax(firstname)) - 非常糟糕的方式,因为它会 使用 WHERE 语句执行 3 个不同的查询,速度很慢 与大数据。
- 用这 3 个定义一些模型,如“PersonsInfo” 字段并从单个查询中返回此模型 - 我认为不好,因为此模型不是域模型。
那么,解决这个问题的正确方法是什么?
【问题讨论】:
标签: java database hibernate service dao