【发布时间】:2019-05-22 18:49:30
【问题描述】:
我正在尝试在 Java 中实现 DAO 模式,但我正在努力创建对称关系,例如,如果我有一个有学生的教师,我将在教师中创建一个列表,但我应该创建一个教师学生的财产?
DAO 类如下所示:
public class TeacherDAO extends DAO<Teacher> {
public Teacher find(int id) {
Statement statement = Connection.getInstance();
// Get the teacher and the students
ResultSet rs = statement.executeQuery("SELECT * FROM teachers LEFT JOIN "
+ "students ON students.teacher_id = teacher.id")
DAO<Student> studentDAO = new StudentDAO();
Teacher teacher = new Teacher();
teacher.setId(rs.getInt("id"));
teacher.setName(rs.getString("name"));
List<Value> students = new ArrayList<>();
rs.beforeFirst();
// For each student, add it to the list (after hydratation)
while (rs.next() && rs.getInt("student.teacher_id") == teacher.getId()) {
students.add(studentDAO.find(rs.getInt("student.id")));
}
teacher.setstudents(students);
return teacher;
}
public boolean update(Teacher t) {...}
public boolean insert(Teacher t) {...}
public boolean delete(Teacher t) {...}
}
到目前为止没有问题,但是如果学生有教师属性,我怎么能对 StudentDAO 的find 进行编码呢?它会调用 TeacherDAO 的find,然后无限循环。
但是必须学生有一个教师属性,否则我怎么能insert一个新学生而不指定相应的教师?
【问题讨论】: