2012-05-29 10 views
8

Ich lerne gerade über die Verwendung von Dao Muster in meinem Projekt. Ich weiß, eine Tabelle entspricht einer Dao, habe ich recht? genau wie StudentDao, .Wie erstellt man ein DAO für Join-Tabellen?

Jede Dao führt CRUD Operationen in den zugehörigen Tabellen, aber meine Frage ist, wie soll ich eine DAO für verbundene Tabellen erstellen? Nehmen wir an, ich habe eine Abfrage, um Student und Subject-Tabelle zu verbinden, und wie erstelle ich dann eine DAO dafür?

Sollte ich es auf die StudentDao setzen? oder zu SubjectDao? Oder gibt es in dieser Situation eine gute Übung?

Antwort

9

DAO - Data Access Object ist Object beantworten, die nur mit Datenbank kommunizieren soll. Also, wenn Sie JOIN zwei Tabellen möchten, müssen Sie in Ihrer DTO Object StudentDTO Referenz auf SubjectDTO haben.

public class StudentDTO { 

    private String name; 
    private String surname; 
    private String age; 
    private SubjectDTO subject; 

    // getters, setters 
} 

So SubjectDTO

public class SubjectDTO { 

    private String name; 
    private int room; 

    // getters, setters 
} 

Und DAO kann wie folgt aussehen:

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(); 
     } 
     } 
    } 
} 

empfehle ich Ihnen einige Tutorials überprüfen.

Grüße

+0

Danke für die Antwort .. Es scheint, als ob DTO die Antwort auf dieses Problem ist –

-4

Dieser Thread ist bereits auf javaRanch (JDBC) gestartet, wollen Ihr nicht verschwenden Ihre Bemühungen zu überprüfen, bevor erste

+0

Sorry, wenn ich diese Frage auf anderem Forum posten zu bekommen, es ist nur, dass ich an einem Projekt bin, die Frist einzuhalten braucht. –