16

私は現在Dao、自分のプロジェクトでパターンを使用する方法を学んでいます。私は知っています、1 つのテーブルは 1 つと同等Daoです、私は正しいですか? のようStudentDaoに、SubjectDao

それぞれが関連付けられたテーブルで操作をDao実行CRUDしますが、私の質問は、結合されたDAOテーブルを作成するにはどうすればよいですか? 学生と科目テーブルを結合するためのクエリがあるとDAOしましょう。

に配置する必要がありStudentDaoますか?またはSubjectDao?または、そのような状況での良い習慣はありますか?

4

1 に答える 1

13

DAO - Data Access ObjectObjectデータベースとのみ通信する必要があります。したがって、JOIN2 つのテーブルが必要な場合は、DTO ObjectStudentDTO 参照に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();
         }
      }
   }
}

いくつかのチュートリアルを確認することをお勧めします。

よろしく

于 2012-05-30T11:50:36.170 に答える