我目前正在學習在我的項目中使用Dao
模式。我知道,一個表相當於一個Dao
,我說得對嗎?就像StudentDao
,SubjectDao
。如何爲連接表創建一個DAO?
每個Dao
在其關聯的表中執行CRUD
操作,但我的問題是,我將如何創建連接表的DAO
?可以說我有一個查詢加入學生和主題表,那麼我該如何創建一個DAO
?
我應該把它放到StudentDao
?或到SubjectDao
?或者在這種情況下有一個很好的做法?
我目前正在學習在我的項目中使用Dao
模式。我知道,一個表相當於一個Dao
,我說得對嗎?就像StudentDao
,SubjectDao
。如何爲連接表創建一個DAO?
每個Dao
在其關聯的表中執行CRUD
操作,但我的問題是,我將如何創建連接表的DAO
?可以說我有一個查詢加入學生和主題表,那麼我該如何創建一個DAO
?
我應該把它放到StudentDao
?或到SubjectDao
?或者在這種情況下有一個很好的做法?
DAO - Data Access Object
是Object
應該只與數據庫進行通信之前,您不會浪費你的精力。所以如果你想JOIN
兩個表,所以你必須有你的DTO Object
StudentDTO參考SubjectDTO
。
public class StudentDTO {
private String name;
private String surname;
private String age;
private SubjectDTO subject;
// getters, setters
}
所以,SubjectDTO
public class SubjectDTO {
private String name;
private int room;
// getters, setters
}
而且DAO
可以是這樣的:
public StudentDAO {
private final String SELECT_QUERY = "SELECT * FROM Student S JOIN Subject Sb ON (S.id = Sb.id)"
public ArrayList<StudentDTO> getData() {
ArrayList<StudentDTO> data = null;
StudentDTO member = null;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = OracleDAOFactory.getConnection();
ps = con.prepareStatement(SELECT_QUERY);
rs = ps.executeQuery();
while (rs.next()) {
member = new StudentDTO();
member.setName(rs.getString(1));
...
data.add(member);
}
return data;
}
catch (SQLException ex) {
// body
}
finally {
if (con != null) {
con.close();
}
}
}
}
我建議你檢查一些教程。
Regards
這個線程已經開始JavaRanch的(JDBC),要檢查回答第一
對不起,如果我在其他論壇上發佈這個問題,這只是我在一個項目,需要符合截止日期。 –
感謝您的回覆..好像DTO是這個問題的答案 –