我有一些简单的域模型,用于描述db中的人员表:
@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 {
//
}
在这项服务中,我希望得到" COUNT(*)"," MAX(年龄)"," MIN(年龄)"来自DAO,使用一些标准(以名字为例)。 这样做的正确方法是什么?
那么,解决这个问题的正确方法是什么?
答案 0 :(得分:0)
假设您正在使用Hibernate作为DAO层,使用非持久模型(第二种建议的方式)获取三个字段是一种糟糕的方式,如您所说。 然后接受第一个选择并让Hibernate为您完成工作并执行聚合函数,这是可以接受的。对于性能问题,Hibernate人员建议使用HQL或条件查询来处理这类案例。Hibernate Documentation