2012-05-29 15 views
8

मैं वर्तमान में 0 प्रोजेक्ट में Dao पैटर्न का उपयोग करने पर सीख रहा हूं। मुझे पता है, एक टेबल एक Dao के बराबर है, क्या मैं सही हूँ? बस StudentDao, SubjectDao की तरह।टेबल में शामिल होने के लिए डीएओ कैसे बनाएं?

प्रत्येक DaoCRUD उनके संबंधित तालिकाओं में संचालन करता है, लेकिन मेरा सवाल यह है कि, मैं शामिल टेबल के लिए DAO कैसे बना रहा हूं? मान लें कि मेरे पास छात्र और विषय तालिका में शामिल होने के लिए एक प्रश्न है, तो मैं इसके लिए DAO कैसे बना सकता हूं?

क्या मुझे इसे StudentDao पर रखना चाहिए? या SubjectDao पर? या उस तरह की स्थिति में एक अच्छा अभ्यास है?

उत्तर

9

DAO - Data Access ObjectObject कि केवल डेटाबेस के साथ संवाद करना चाहिए से पहले अपने प्रयास नहीं बर्बाद कर जाँच करना चाहते हैं। इसलिए यदि आप JOIN दो टेबल चाहते हैं तो आपके DTO Object छात्र डीटीओ संदर्भ 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(); 
     } 
     } 
    } 
} 

मैं तुम्हें करने के लिए सलाह देते हैं कुछ ट्यूटोरियल की जाँच करें।

सादर

+0

उत्तर के लिए धन्यवाद .. ऐसा लगता है कि डीटीओ इस समस्या का उत्तर है –

-4

यह धागा पहले से ही javaRanch (JDBC) पर शुरू किया गया है, अपने जवाब देने के लिए पहले

+0

क्षमा करें यदि मैं अन्य मंच पर इस सवाल का पोस्ट करने के लिए मिलता है, यह सिर्फ इतना है कि मैं एक परियोजना की समय सीमा को पूरा करने की जरूरत है, जिस पर हूँ। –

संबंधित मुद्दे