2012-05-29 60 views
8

我目前正在學習在我的項目中使用Dao模式。我知道,一個表相當於一個Dao,我說得對嗎?就像StudentDaoSubjectDao如何爲連接表創建一個DAO?

每個Dao在其關聯的表中執行CRUD操作,但我的問題是,我將如何創建連接表的DAO?可以說我有一個查詢加入學生和主題表,那麼我該如何創建一個DAO

我應該把它放到StudentDao?或到SubjectDao?或者在這種情況下有一個很好的做法?

回答

9

DAO - Data Access ObjectObject應該只與數據庫進行通信之前,您不會浪費你的精力。所以如果你想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

+0

感謝您的回覆..好像DTO是這個問題的答案 –

-4

這個線程已經開始JavaRanch的(JDBC),要檢查回答第一

+0

對不起,如果我在其他論壇上發佈這個問題,這只是我在一個項目,需要符合截止日期。 –