Docstoc

_____ _____ _______ __ ____ _____ J2EE _____ _______ _______

Document Sample
_____ _____ _______ __ ____ _____ J2EE _____ _______ _______ Powered By Docstoc
					                   ‫رمس١ُ اٌظفؾبد ِٓ خالي ‪J2EE‬‬
                   ‫الداسح إٌزبئظ اٌىج١شح ثشىً فؼبي‬

      ‫رؼٍُ و١ف رذ٠ش ػٍّ١خ رمس١ُ اٌظفؾبد ِٓ أعً االسزؼالِبد اٌغ١ش‬
 ‫ِؾذٚدح راد إٌزبئظ اٌىج١شح ثذْٚ أْ رٕسف ِخذِه ؽ١ش ػٍ١ه أْ رٛعذ‬
‫اٌزٛاصْ اٌظؾ١ؼ ث١ٓ اسزخذاَ اٌّظذس ِٚزطٍجبد صِٓ االسزغبثخ ٌىٟ رٍجٟ‬
                                                 ‫اؽز١بعبد صثٛٔه.‬

 ‫إْ ػٍّ١خ رمس١ُ اٌظفؾبد ٟ٘ اٌطش٠مخ األثسط ٌزفظً وّ١بد وج١شح ِٓ‬
      ‫اٌج١بٔبد إٌٝ أعضاء ٠ّىٓ إداسرٙب ثشىً أثسط,وّب أْ ػٍّ١خ رمس١ُ‬
  ‫اٌظفؾبد ٟ٘ عضء سئ١سٟ ِٓ رظّ١ُ ِٛلغ أزشٔذ ‪ٚ Web site‬رٌه ِٓ‬
 ‫خالي ٚعٙخ ٔظش ‪ٚ UI‬رٌه إلداسح ِّزٍىبد اٌشبشخ اٌّؾذٚدح ,ِٚٓ ٚعٙخ‬
  ‫ٔظش اٌّخذَ ٚرٌه ٌّؼبٌغخ ٚعٛد ػذد ٘بئً ِٓ ٔزبئظ اٌجؾش ِضال ثشىً‬
                                 ‫وفء ٚثذْٚ أْ ٔسجت رأخ١ش اٌخذِخ.‬
‫رّزٍه ‪١ِ J2EE‬ضح رمس١ُ اٌظفؾبد ثشىً فؼبي ٚ أِٛس أسبس١خ ٌّؼبٌغخ‬
                                                              ‫إٌذ‬
                                                    ‫ائظ اٌىج١شح.‬

              ‫رغرجش ػٍّ١خ رمس١ُ اٌظفؾبد أِش ػشٚسٞ ٌٍذٚاػٟ اٌزبٌ١خ :‬
    ‫‪ ‬شبشخ اٌؼشع اٌّؾذٚدح: فمذ ٠ىْٛ ‪ٍّ٠ JSP/client UI‬ه ِغبي‬
        ‫غ١ش وبفٟ الظٗا س إٌزبئظ اٌىبٍِخ فٟ ٔفس اٌٛلذ ٚسثّب ال ٠ىْٛ‬
 ‫ثبسزطبػخ ِسزخذِه أْ ٠غذ ِبرا ٠ش٠ذ ثسشػخ فٟ ِغّٛػخ ِؼط١بد‬
                                                          ‫وج١شح عذا.‬
‫ائظ إٌبرغخ ػٓ اسزؼالَ ِب‬‫‪ ‬ػذد وج١ش ِٓ إٌزبئظ :سثّب رىْٛ ػذد إٌذ‬
        ‫وج١ش عذا ؽ١ش ٠ظؼت إداسرٙب ثشىً ِسئٛي ػّٓ ارظبٌه ٚ‬
                                   ‫إِىبٔ١بد اٌزاوشح اٌّزبؽخ ٌذ٠ه.‬

                                                 ‫اسزشار١غ١بد اٌزمس١ُ :‬

            ‫ٌىٓ‬
   ‫رجذٚ اسزشار١غ١بد اٌزمس١ُ ٚاالسزؼالَ األسبس١خ ثس١طخ ٘ب رؤدٞ‬
  ‫إٌٝ وبسصخ إرا فشٍذ فٟ اػزجبس رطٛس االسزؼالَ ٚص٠بدح ؽغُ اٌج١بٔبد ٚإْ‬
      ‫االسزؼالِبد اٌغ١ش ِؾذٚدح اٌزٟ ٠زُ رطج١مٙب ػٍٝ ِغّٛػبد ث١بٔبد‬
    ‫رغش٠ج١خ سثّب رٕخفغ ثؾذح ِمبثً اٌج١بٔبد اٌؾم١م١خ فئرا ٌُ رمَٛ ثئداسح‬
                          ‫ٔظبَ إداسح لبػذح اٌج١بٔبد ‪ِٛٚ DBMS‬اسد اٌزاوشح .‬

    ‫٠زُ اٌزخٍض ِٓ ػٍّ١خ اسزشعبع اٌج١بٔبد اٌفؼبي ٚػٍّ١خ اٌزمس١ُ ث١ٓ‬
   ‫اسزخذاَ اٌزاوشح ٚ ِزطٍجبد ٚلذ االسزغبثخ.ٚرمغ آٌ١خ رمس١ُ اٌظفؾبد‬
                         ‫ِٓ خالي رمٕ١خ ‪ J2EE‬فٟ طٕف١ٓ أسبس١١ٓ ّ٘ب:‬
‫‪: Cache cased ‬ؽ١ش رخضْ إٌزبئظ ِٓ أط ي ٚطٛي أسشع فٟ طفؾبد‬
                                                         ‫الؽمخ.‬
‫‪: Query based ‬ؽ١ش رغٍت إٌزبئظ ِٓ ٔظبَ إداسح لبػذح اٌج١بٔبد ػٕذ‬
                                         ‫اٌطٍت وظفؾبد ِسزخذَ.‬
‫ٕ٘بن رمٕ١بد ِؼمذح أوضش رؼزّذ ػٍٝ ِفَٙٛ اٌذِظ ث١ٓ اٌظٕف١ٓ اٌسبثم١ٓ‬
  ‫فٟٙ رغجش ػٍٝ أؽغبَ راوشح ِخجئ١خ ػٓ طش٠ك اسزخذاَ راوشح ٚس١طخ‬
‫ٌٙب ػذد صبثذ ِٓ اٌظفؾبد,ٚاسزؼّبي رمٕ١بد اسزؼالَ فؼبٌخ ِٚسبسة غ١ش‬
         ‫ِزظٍخ ‪ٚ offline threads‬إػبدح إٌزبئظ إٌٝ اٌضثْٛ ثشىً ٚاػؼ.‬

 ‫إْ اٌّفب٘١ُ اٌّؼزّذح ػٍٝ اٌزاوشح اٌّخجئ١خ رىْٛ أسشع ٌىٓ ٌذ٠ٙب ثؼغ‬
  ‫اٌّخبطش فؼٍٝ سج١ً اٌّضبي ػٕذِب ٠ىْٛ ٌذ٠ٕب اسزؼالِبد غ١ش ِؾذٚدح‬
                                     ‫ف‬
   ‫راد ػذد وج١ش عذا ِٓ إٌزبئظ ٠ّىٓ أْ رمٛدٔب إٌٝ اسزخذاَ راوشح ال‬
   ‫٠ّىٓ اٌس١طشح ػٍ١ٗ ػٕذِب رٕشش إٌزبئظ ػٍٝ ٔؾٛ ِزسٍسً ِٚخجأ.‬

                    ‫َ‬       ‫ي‬
 ‫رأخز ِغّٛػبد إٌزبئظ اٌىج١شح ٚلذ أطٛي ٠زُ رخذٞ٘ب وّب رشغً ارظبي‬
       ‫ِزبػ ِٚٛاسد اٌغٍسخ ‪ٚ session resources‬رغذس ثٕب ِالؽظخ اٌّسأٌخ‬
     ‫اٌزبٌ١خ ٟٚ٘ أٔٗ وٍّب اسزأٔف ارظبي ٌفزشاد طٛ٠ٍخ ِٓ اٌٛلذ فئْ ػذد‬
    ‫االرظبالد اٌّزبؽخ فٟ ِغّغ االرظبي اٌّشزشن اٌخبص ثه ٚاٌزٞ رؤِٕٗ‬
 ‫ث١ئخ اٌؼًّ ‪٠ J2EE‬مًٍ ثشىً فؼبي ٌٚىٟ رزّىٓ ِٓ ؽً ِشىٍخ اٌزؾّ١ً‬
  ‫اٌؼبٌٟ فئْ ٔظبِه ٠غت أْ ٠ٙذف إٌٝ رخذ٠ُ طٍجبره ثأوجش سشػخ ِّىٕخ‬
‫فئرا أخزد طٍجبره ٚلزب وج١شا ٌزؼبٌظ فئْ وّ١خ اٌّؼٍِٛبد اٌزٟ ٠زُ ِؼبٌغزٙب‬
‫فٟ ٚلذ ٚاؽذ سٛف رٕٙبس.طجؼب أذ ال رش٠ذ أْ رشغً ِٛاسدن ثبسزؼالِبد‬
 ‫طٛ٠ٍخ األِذ ألْ رٌه سٛف ٠غؼٍه ٌٓ رزشن أ٠خ ارظبالد ِٚسبسة رفؼً أٞ‬
                                                             ‫شٟء آخش.‬

 ‫٠ّىٓ أْ رمٛد االسزؼالِبد اٌطٛ٠ٍخ األِذ إٌٝ ارظبالد خشعذ ػٓ اٌٛلذ‬
‫اٌّخظض ٌٙب ٚرٌه فٟ ؽبي أخز اسزؼالِه ٚلزب أوضش ِٓ أعً أْ ٠ٕفز ِٓ‬
       ‫اٌٛلذ اٌزٞ ؽذدرٗ ٌه ارظبي ‪ٌٚ JDBC‬زغٕت رٌه فٟ االسزشار١غ١بد‬
     ‫‪ ِٓ cache-based‬خالي رؼ١١ك أَ رؾذ٠ذ ػٍّ١خ اٌجؾش اٌزٟ رمَٛ ثٙب‬
‫ثؾ١ش ٠ىْٛ اسزؼالِبد ٔظبَ ِذ٠ش لبػذح اٌج١بٔبد اٌخبص ثه ٚوزٌه إٌزبئظ‬
                                                            ‫ِؾذٚدح.‬

     ‫فٟ ٘زٖ اٌؾبٌخ ٠ىْٛ اسزخذاَ اٌزاوشح اٌّخجئ١خ أوضش ٔفؼب ػٕذِب رىْٛ‬
           ‫اٌج١بٔبد اٌّٛػٛػخ فٟ ٘زٖ اٌزاوشح رطٍت ثشىً ِزىشس فئرا وبْ‬
    ‫ِسزخذِه ػٍّ١بد اٌجؾش اٌزٞ ٠مَٛ ثٙب ِسزخذِه رخؼغ إٌٝ ٔزبئظ‬
    ‫ٚاػؾخ اٌّؼبٌُ فئْ اٌزاوشح اٌّخجئ١خ اٌزٟ رسزخذِٙب ٌٓ ٠ىْٛ ثئِىبٔه‬
 ‫إػبدح اسزخذاِٙب ٌطٍجبد أخشٜ ٌىٓ األِش األسٛأ إرا وبْ اٌّسزخذَ ٔبدسا‬
        ‫ِب ٠زظفؼ اٌظفؾبد اٌزٟ رٍٟ اٌظفؾخ اٌشئ١س١خ ػٕذ٘ب فئْ اٌزاوشح‬
  ‫‪ CACHE‬اٌخبطخ ثه اٌّٛعٛدح ػّٓ اٌغٍسخ ‪ Session‬سزىْٛ ثال أّ٘١خ‬
     ‫ٌزٌه سٕجغٟ ػٍ١ه أْ رىْٛ ؽش٠ظب فٟ ػٍّ١خ إداسح اٌزاوشح اٌّخجئ١خ‬
 ‫ثؾ١ش ال رسجت اصد٠بدا وج١شا ٌٙب ٚ ٠زُ االٔزٙبء ِٕٙب ثسشػخ ػٕذِب ال رغٚد‬
                                                                ‫ِطٍٛثخ.‬
  ‫إْ اٌّفب٘١ُ اٌّؼزّذح ػٍٝ ػٍّ١خ االسزؼالَ ٚوزٌه اٌٙغ١ٕخ ٟ٘ أوضش‬
   ‫ٚصٛل١خ ِٓ اٌّفب٘١ُ اٌّؼزّذح ػٍٝ اٌزاوشح اٌّخجئ١خ ؽ١ش ٠ىْٛ ٌذ٠ٙب‬
 ‫أصِٕخ اسزغبثخ أثطأ ٌىٓ ٠ّىٓ ل١بسٙب ثشىً ٚاػؼ ِٓ أعً ِغّٛػبد‬
‫إٌز١غخ اٌىج١شح ٚ أؽغبَ اٌطٍت اٌؼبٌ١خ,ٚإْ االسزؼالَ اٌغ١ش ِؾذٚد س١أخز‬
  ‫ٚلزب أطٛي ٌ١ٕفز ٌىٓ ٌٓ ٠زغبٚص ؽذٚد راوشره أٚ س١أخز فزشح طٛ٠ٍخ عذا‬
‫ٌىٟ ٠ٕفز,ٚ٠زخٍٝ ارظبي ٔظبَ ِذ٠ش لبػذح اٌج١بٔبد ‪ DBMS‬ؽبٌّب ٠زُ عٍت‬
 ‫اٌج١بٔبد ٚرٌه ٠ؼٕٟ ثذٚسٖ أْ االرظبي ٠ؾغض ٌفزشح لجً أْ رزُ إػبدرٗ إٌٝ‬
 ‫ِغّغ االرظبي ٚإْ اٌسٍج١خ اٌٛؽ١ذح ٟ٘ أْ اٌّؼٍِٛبد اإلػبف١خ ٠غت أْ‬
                      ‫رّشس ر٘بثب ٚإ٠بثب ػٍٝ طٍجبد اٌظفؾخ اٌخبطخ ثه.‬

     ‫٠ظٙش اٌغذٚي اٌزبٌٟ ثؼغ إٌزبئظ اٌزٟ ٠ٕجغٟ ػٍ١ه أْ رأخز٘ب ثؼ١ٓ‬
                        ‫االػزجبس ػٕذِب رمشس أٞ ِفَٙٛ ػٍ١ه أْ رؼزّذ:‬

                                                        ‫ط‬
  ‫اسزشارٟ ٠بد ػٍّ١خ رمس١ُ اٌظفؾبد اٌّؼزّذح ػٍٝ ػٍّ١خ االسزؼالَ:‬


       ‫إْ اٌّفزبػ ٌزؾمك ػٍّ١خ رمس١ُ اٌظفؾبد اٌّؼزّذح ػٍٝ ػٍّ١خ‬
 ‫االسزؼالَ فؼبٌخ ٘ٛ أْ رؾذد أعٙضح اٌذخً ٚاٌخشط ٌمبػذح اٌج١بٔبد ثؾ١ش‬
‫٠ّىٕه أْ رغٍت فمط اٌظفؾخ أٚ اٌظفؾبد اٌزٟ طٍجذ ثشىً دل١ك ٚاٌزٟ‬
                                                       ‫أٔذ ثؾبعزٙب.‬

‫ٕ٘بن طش٠مخ ٚاؽذح فمط ٌزؼّٓ ثأٔه ٌٓ رغّغ أٚ رمشأ ث١بٔبد وض١شح ٟ٘ أْ‬
  ‫رزؼبًِ ِغ اٌجٕذ ‪ Where‬فٟ اسزؼالَ اٌجؾش اٌخبص ثه ٌززغٕت اٌج١بٔبد‬
                                                            ‫ره‬
 ‫اٌزٟ ال ٚ ْ ثؾبعخ إٌ١ٙب ٚثىٍّبد أخشٜ أٔذ رؼ١ك ِغبي االسزؼالَ, إْ‬
  ‫٘زا اٌّفَٙٛ ٠زطٍت أْ رّشس اٌّؼٍِٛبد اإلػبف١خ ر٘بثب ٚإ٠بثب ػٍٝ طٍجبد‬
   ‫اٌظفؾخ اٌخبطخ ثه ٚرٌه ِٓ أعً أْ رزّىٓ آٌ١خ رمس١ُ اٌظفؾبد ِٓ‬
                                                 ‫اٌزؼذ٠ً ثشىً رٍمبئٟ.‬

            ‫٠غت أْ ٠زّىٓ االسزؼالَ ‪ ِٓ query‬أْ ٠فسش األِٛس اٌزبٌ١خ:‬
       ‫1. ارغبٖ رمس١ُ اٌظفؾبد:‪ Forward/next‬أٚ ‪. back/previous‬‬
                                                  ‫2. ِؼ١بس اٌجؾش.‬
  ‫3. اٌظفؾخ اٌّطٍٛثخ:٠شعغ اٌظفٛف ‪ rows‬اٌخبطخ ثبٌظفؾخ اٌّطٍٛثخ‬
                                                         ‫فمط.‬
                          ‫4. ؽغُ اٌظفؾخ:ػذد اٌظفٛف فٟ اٌظفؾخ.‬

‫إْ ارغبٖ رمس١ُ اٌظفؾبد ٘ٛ أِش ٘بَ ٌٍغب٠خ إرا أسدد أْ رىْٛ لبدسا ػٍٝ‬
    ‫رمس١ُ اٌظفؾبد ٌألِبَ ٌٍٚخٍف ػجش اٌج١بٔبد اٌزٟ ؽظٍذ ػٍ١ٙب ٚإْ‬
   ‫اسزخذاَ ِفَٙٛ ‪٠ caching‬ؤِٓ ٌه ػٍّ١خ اٌزظفؼ ٌٍخٍف ٚ رٌه ٠ؼًّ‬
 ‫ثشىً ع١ذ فٟ ؽبي ِب إرا وبٔذ اٌج١بٔبد سزبر١ى١خ أِب إرا وبٔذ اٌج١بٔبد‬
 ‫ِزغ١شح فئْ اٌطش٠مخ اٌٛؽ١ذح ٌزؼّٓ إٌزبئظ اٌظؾ١ؾخ ٟ٘ أْ رسزؼًّ‬
‫اسزؼالَ آخش ٌىٟ ٠غٍت ٌه اٌظفؾخ اٌسبثمخ ِٓ اٌج١بٔبد ٚرٌه ٠ؼٕٟ أٔٗ‬
  ‫ػٍ١ه أْ رسزخذَ اٌجٕٛد ‪ WHERE ٚ ORDER BY‬اٌخبطخ ثٍغخ ‪ SQL‬فئرا‬
                                                       ‫د ٞ‬
 ‫رُ خضص ػّٛد أٚ أوضش ٔز١غخ ػٍّ١خ ‪ ORDER BY‬ألِش رمس١ُ اٌظفؾبد‬
      ‫األِبِٟ فئٔٗ ثؼىس ارغب٘بد ‪ ORDER BY‬ثبالشزشان ِغ ثٕذ ‪WHERE‬‬
        ‫إٌّبست ٠ّىٕه أْ رؾظً ػٍٝ ػٍّ١خ اٌزظفؼ ٌٍخٍف,فّضال ٔؾٓ‬
                                          ‫د‬
 ‫ٔسزخذَ ِؼشفبد اٌظف يؽذد طفؾزه وّب فٟ اٌشىً 1 ؽ١ش أْ ِؼشف‬
‫اٌظف ٠ؼشف ثشىً ٚؽ١ذ طف ‪ row‬فٟ إٌز١غخ ٚ٠زأٌف ِٓ ٚاؽذ أٚ أوضش ِٓ‬
                                                        ‫األػّذح.‬

     ‫ثشىً ّٔٛرعٟ فئْ ِؼشف اٌظف اٌخبص ثه ‪ ID‬سثّب ٠ىْٛ ٘ٛ اٌّفزبػ‬
  ‫اٌشئ١سٟ ٚ ٠ؼزّذ رٌه ػٍٝ اٌج١بٔبد فشثّب ٠ىْٛ ِشوت ِٓ أػّذح ِفزبػ‬
  ‫سئ١سٟ ٚ/أٚ أػّذح أخشٜ,ٚ٠زُ رشِ١ض اٌظفؾخ ِٓ لجً ِؼشف طف اٌجذا٠خ‬
     ‫ِٚؼشف طف إٌٙب٠خ ؽ١ش اٌظف األٚي ٚاٌظف األخ١ش فٟ اٌظفؾخ ػٍٝ‬
  ‫اٌززبٌٟ,ِٚٓ أعً ػٍّ١خ اٌزظفؼ ٌألِبَ ػٍ١ه أْ رؼذي االسزؼالَ ٌزغٍت‬
     ‫وً اٌظفٛف ثؾ١ش ٠ىْٛ ِؼشف اٌظف أوجش ِٓ ِؼشف اٌظف األخ١ش فٟ‬
   ‫اٌظفؾخ اٌؾبٌ١خ ِٚٓ أعً ػٍّ١خ اٌزظفؼ ٌٍخٍف ٠ىْٛ االسزؼالَ ثؾ١ش‬
   ‫رغٍت وً اٌظفٛف اٌزٟ رىْٛ ِؼشفبرٙب أطغش ِٓ ِؼشف اٌظف األٚي فٟ‬
                                                    ‫اٌظفؾخ اٌؾبٌ١خ.‬

‫رؼًّ ٘زٖ ا٢ٌ١خ ثشىً ع١ذ فٟ ؽبٌخ ػّٛد ٚاؽذ ِٚؼشفبد طفٛف ثس١طخ‬
‫ٌىٓ ػٍّ١بد اٌجؾش ٔبدسا ِب رىْٛ ثٙزٖ اٌجسبطخ ففٟ ثؼغ اٌؾبالد ػٕذِب‬
  ‫٠ىْٛ ِؼشف اٌظف ِشوت ِٓ أػّذح ٚارغٗ رظفؼ أِبِٟ ػبدٞ ٌىٓ ٠ىْٛ‬
‫ٕ٘بن ِض٠ظ ِٓ اٌزشر١ت اٌزظبػذٞ أٚ اٌزٕبصٌٟ ٌألػّذح فئْ األِش س١خزٍف.‬

                          ‫خٛاسصِ١خ اٌزظفؼ اٌّؼزّذح ػٍٝ ِؼشف اٌظف:‬
 ‫ٌٕأخز ِضبي ثس١ط ؽ١ش ٠زُ اخز١بس صالصخ أػّذح اٌؼّٛد األٚي 1‪ٛٔ ِٓ col‬ع‬
  ‫‪ٚ VARCHAR‬اٌؼّٛد اٌضبٟٔ 2‪ٛٔ ِٓ col‬ع ‪ٚ INTEGER‬اٌؼّٛد اٌضبٌش 3‪col‬‬
‫ِٓ ٔٛع ‪ ِٓ TIMESTAMP‬عذٚي رٚ االسُ ‪ ِٓٚ foo‬أعً أْ رغٍت اٌظفؾخ‬
                                     ‫األٌٚٝ اسزخذَ االسزؼالَ اٌزبٌٟ:‬

‫3‪SELECT col1,col2,col‬‬
 ‫‪FROM foo‬‬
‫‪WHERE col1=? // ? your condition‬‬
‫‪ORDER BY col2 ASC,col3 DESC‬‬

  ‫فٟ ٘زا اٌّضبي ٌذ٠ٕب ِؼشف اٌظف ِؤٌف ِٓ اٌؼّٛد األٚي ٚاٌضبٟٔ ٔز١غخ‬
 ‫اٌجؾش ٠غت أْ رىْٛ ِشرجخ رظبػذ٠ب ٚفك اٌظف اٌضبٟٔ ٚرٕبصٌ١ب ٚفك اٌظف‬
‫األٚي ٚإْ ‪ JDBC‬رؤِٓ ٌه ربثغ ٌ١ؾذد ػذد األػّذح اٌزٟ ٠زُ إسعبػٙب ٔز١غخ‬
        ‫االسزؼالَ ٚ٘ٛ ِٓ اٌشىً )‪. Statement::setMaxRows(int Max‬‬
   ‫ِٚٓ أعً أْ رغٍت اٌظفؾخ األٌٚٝ اسزؼًّ االسزؼالَ األسبسٟ ٚلُ‬
  ‫ثزٙ١ئخ اٌؼذد األػظّٟ ٌٍظفٛف ثؾ١ش ٠زالءَ ِغ ؽغُ طفؾزه ِٚٓ أعً‬
                           ‫ألْ رؼّٓ األداء األِضٍٟ اسزؼًّ اٌزبثغ:‬

 ‫)‪Statement ::setFetchSize(int rows‬‬



              ‫فّٓ أعً أْ رغٍت اٌظفؾخ اٌزبٌ١خ ػٍ١ه أْ رىزت ِب ٠ٍٟ:‬
‫3‪SELECT col1,col2,col‬‬
‫‪FROM foo‬‬
‫) )? < 3‪WHERE col1=? AND ((col2 > ?) OR (col2= ? AND col‬‬

‫‪ORDER BY col2 ASC,col3 DESC‬‬

           ‫ٚ ِٓ أعً أْ رغٍت اٌظفؾخ اٌسبثمخ ػٍ١ه أْ رىزت ِب ٠ٍٟ:‬
‫3‪SELECT col1,col2,col‬‬
‫‪FROM foo‬‬
‫) )? > 3‪WHERE col1=? AND ((col2 < ?) OR (col2= ? AND col‬‬

‫‪ORDER BY col2 ASC,col3 DESC‬‬

   ‫رأوذ ػٕذِب رىزت اٌش١فشح ثأٔه رشرت إٌزبئظ رشر١جب رظبػذ٠ب لجً أْ رمذَ‬
                                                         ‫اٌظفؾخ ٌٍضثْٛ.‬

‫رؼًّ ٘زٖ اٌخٛاسصِ١خ ِٓ أعً ِغّؼبد إٌزبئظ اٌىج١شح ٚ االسزؼالِبد اٌغ١ش‬
      ‫ِؾذٚدح ٚاٌّؼمذح,ِٚٓ أعً أْ ٠ىْٛ األداء أِضٍ١ب رأوذ ثأْ أػّذح اٌجٕذ‬
                                                        ‫‪ِ WHERE‬فٙشسخ‬

                       ‫ِضبي ػٍّٟ ػٓ اٌزظفؼ اٌّؼزّذ ػٍٝ االسزؼالَ:‬

    ‫ؽبٌّب رزجٕٝ خٛاسصِ١خ رظفؼ ِؼزّذح ػٍٝ االسزؼالَ,ؽبٚي أْ رطجمٙب‬
 ‫ػٍّ١ب ثئٔشبء ِىْٛ رظفؼ ‪ paging component‬ػبَ ٠ّىٓ اسزخذاِٗ ِٓ‬
    ‫أعً أٞ اسزؼالَ سٛاء وبْ ثس١ط أَ ِؼمذ ,ٚإْ إطبس رظفؾه ‪paging‬‬
  ‫‪٠ framework‬غت أْ ٠ىْٛ ِضٚدا ثٛاعٙخ ٚاػؾخ ٚٚاعٙخ ثشِغخ رطج١مبد‬
‫‪ API‬ثس١طخ ٚ٠غت أْ رؼبٌظ عٍت اٌج١بٔبد ٚ ٔمٍٙب ِٚؼشفبد اٌظفٛف ٚرّش٠ش‬
                         ‫س‬
        ‫اٌجبساِزش ِٚؼبٌغخ االسزؼالَ ِضً رجذ٠ً ثبساِذ ِؼ١بس ثؾش ثس١ط.‬

 ‫إْ اٌخطٛاد اٌزبٌ١خ سزششذن إلٔشبء ِىْٛ رظفؼ ‪: paging component‬‬
                                                    ‫اٌخطٛح األٌٚٝ:‬
                                ‫لُ ثزشى١ً ِشٙذ اٌزظفؼ اٌخبص ثه.‬

                                                   ‫اٌخطٛح اٌضبٔ١خ:‬
 ‫أٔشأ طٕف ٌ١ّضً ِشٙذن ٌٚ١ىٓ اسّٗ ‪ّ٠: PageDefn‬ىٕه إِب أْ رؾٍّٗ‬
     ‫ِٓ ٍِف خبص أٚ أْ رٕشئٗ ثسشػخ فبئمخ ػّٓ ش١فشره ؽ١ش ٠ؼزجش‬
    ‫اٌزشر١ت ِسأٌخ ٘بِخ ألٔٗ ال ٠غت أْ ٠ؼشف اٌّسزذػٟ أٞ شٟء ػٓ‬
 ‫داخٍ١بد اٌّشٙذ أٚ اٌغذٚي ‪٠ٚ, meta-data‬غت أْ ٠زؼّٓ ٘زا اٌظٕف وً‬
  ‫اٌج١بٔبد راد اٌؼاللخ ثشٙذ اٌزظفؼ اٌخبص ثه ٚ٘ٛ ِسؤٚي ػٓ ِؼبٌغخ‬
                                                   ‫رؼٍ١ّبد ‪. SQL‬‬

                                                     ‫اٌخطٛح اٌضبٌضخ:‬
         ‫أٔشئ غشع ٚطٛي ث١بٔبد اٌزظفؼ )‪: Data Access Object(DOA‬‬
 ‫أٔشئ غشع ٚطٛي ث١بٔبد اٌزظفؼ )‪ Data Access Object(DOA‬رٚ غشع‬
  ‫خبص ثؾ١ش ٠ذػُ رجذ٠ً اٌجبساِزش ٚػجبساد ‪ Prepared‬اٌّسجمخ ؽ١ش أْ‬
 ‫٘زٖ اٌؼجبساد ٟ٘ األسشع ِٓ االسزؼالِبد اٌؼبد٠خ ألٔٙب رزّىٓ ِٓ -‪pre‬‬
      ‫‪ ِٓ compiled‬لجً ‪ DBMS‬ؽ١ش س١مَٛ ٘زا اٌغشع ثزٕف١ز اسزؼالَ‬
     ‫اٌزظفؼ ِٚؼبٌغخ إٌزبئظ,ٚإْ رؼٍ١ّخ ‪ SQL‬اٌفؼٍ١خ ٟ٘ ِفٛػخ ٌٍظٕف‬
    ‫‪. PageDefn‬إْ رٌه اٌفظً ٌال٘زّبِبد س١سّؼ ٌه ثأْ رطٛس اٌظٕف‬
 ‫‪ ٚ PageDefn‬األطٕبف اٌغضئ١خ ِٕٗ ٌزؤِٓ رشى١ً اسزؼالَ ِزطٛس ِسزمً‬
            ‫ػٓ غشع ٚطٛي ث١بٔبد اٌزظفؼ )‪. Data Access Object(DOA‬‬

 ‫رأوذ ثأْ غشع ٚطٛي ث١بٔبد اٌزظفؼ )‪ Data Access Object(DOA‬اٌخبص‬
          ‫ثه س١غٍك عّ١غ ِظبدس ٚاػذ اٌج١بٔبد ‪(ResultSet ,Statements‬‬
‫)‪ ,Connection‬ؽبٌّب ٠ٕفز االسزؼالَ ٚفُ ثٛػغ ش١فشح اإلغالق ػّٓ اٌجٕذ‬
 ‫‪ Finally‬ثؾ١ش س١زُ إغالق عّ١غ ِظبدسن ؽزٝ ػٕذِب ٠شِٝ اسزضٕبء ِب.‬

                                                        ‫اٌخطٛح اٌشاثؼخ:‬
     ‫أٔشئ اٌظٕف١ٓ ‪: PageContext and PageCommand‬أٔشئ اٌظٕف‬
    ‫‪١ٌ PageCommand‬غٍف طٍت طفؾزه ٚ٠ّسه إٌزبئظ.ع١ش أْ رمٕ١خ‬
    ‫‪ٚ client servlets‬األفؼبي سٛف رسزخذَ ٘زا اٌظٕف ٌززفبػً ِغ إطبس‬
‫اٌزظفؼ ‪ paging framework‬اٌخبص ثه ٚ٠غت أْ ٠ضٚد ثطشق رمَٛ ثزؾم١ك‬
                                                                ‫ِب ٠ٍٟ:‬
                           ‫‪ ‬رخظ١ض اٌُش٘ذ اٌٙذف)‪.(PageDefn‬‬
                ‫‪ ‬رأِ١ٓ ِؼب٠١ش ثؾش اخز١بس٠خ (ثبساِزشاد االسزؼالَ).‬
      ‫‪ ‬رخظ١ض ػًّ اٌظفؾخ )‪. (FIRST ,CURRENT ,NEXT ,BACK‬‬
                                       ‫‪ ‬اٌٛطٛي إٌٝ ٔزبئظ اٌظفؾخ.‬

   ‫ثبإلػبفخ ٌزٌه ٠غت أْ ٠غٍف اٌظٕف ‪ PageCommand‬أٞ ِؼٍِٛبد فٟ‬
‫س١بق اٌؼًّ ‪ِ context information‬طٍٛثخ ِٓ لجً رؾم١ك اٌزظفؼ ٌزذػُ‬
    ‫خٛاسصِ١خ اٌزظفؼ ٌٚزٌه أٔشئ اٌغشع اٌزٞ ٠مَٛ ثؼًّ طٍت اٌزظفؼ‬
    ‫اٌخبص ثه ٚ إٌزبئظ ٚ٠غٍف األِٛس اٌذاخٍ١خ ٌؼٍّ١خ اٌزظفؼ اٌخبطخ ثه.‬

           ‫إْ اٌظٕف ‪ ٛ٘ PageCommand‬غشع ٔمً ث١بٔبد ‪Data Transfer‬‬
     ‫)‪ Object(DTO‬اٌزٞ ٠ٕمً ثبساِزشاد اٌطٍت ٚ٠ّسه إٌزبئظ ٚإْ ِؼشفبد‬
‫اٌظفٛف ٚث١بٔبد اٌظفؾخ ٠ؾزفظ ثٙب داخً اٌغشع ‪ PageContext‬ؽ١ش ٠غت‬
‫أْ ال ٠ؼشف اٌّسزذػٟ أٞ شٟء ػٕٗ ثشىً ِجبشش ثبسزضٕبء أْ ٠ززوش أٔٗ‬
     ‫٠ّىٓ أْ ٠ؼ١ذ اسزخذاِٗ ِٓ خالي طٍجبد اٌظفؾخ ِٓ أعً طٍت لشاءح‬
                                                             ‫ُؼطٝ.‬‫ِ‬

                                                   ‫اٌخطٛح اٌخبِسخ:‬
                                       ‫أٔشئ اٌظٕف ‪: PagingService‬‬
            ‫أٔشئ خذِخ رظفؼ ِزخظظخ ِٓ أعً ِؼبٌغخ طٍجبد اٌظٕف‬
      ‫‪ PageCommand‬ؽ١ش أٔٗ س١ؼبٌظ رٍه اٌطٍجبد ٚ٠ّشس٘ب إٌٝ اٌظٕف‬
                                                 ‫‪ٌ PagingADO‬زؼبٌظ.‬

                                                ‫اٌخطٛح اٌسبدسخ:‬
  ‫رّش٠ٓ ػٍٝ اٌظٕف ‪ٌ:pagecommand‬ىٟ رغٍت اٌظفؾخ األٌٚٝ أٔشئ‬
‫غشػب ِٓ اٌظٕف ‪ٚ PageCommand‬ؽًّ اٌّشٙذ اٌٙذف اٌخبص ثه ٚ٘١ئ‬
                                                              ‫ح‬
  ‫أٞ ثبساِزشاد ِضٚدح ِٓ لجً اٌّسزخذَ ٚفؼً اٌظفؾخ ٚسٍُ األِش إٌٝ‬
  ‫اٌظٕف ‪ CORManager‬ؽ١ش ٠مَٛ ٘زا اٌظٕف ثئسسبي األِش ثشىً ٚاػؼ‬
                                   ‫إٌٝ اٌظٕف ‪١ٌ PageService‬ؼبٌظ:‬

   ‫ٌٚىٟ رغٍت اٌظفؾخ اٌزبٌ١خ رأوذ ثأْ رسزخذَ اٌظٕف ‪ِٓ PageContext‬‬
   ‫اٌطٍت اٌسبثك ؽ١ش ٠زؼّٓ ٘زا اٌظٕف عّ١غ اٌّؼٍِٛبد اٌزٟ رؾزبعٙب‬
     ‫ػٍّ١خ اٌزظفؼ ِٓ أعً طٍجبره,ٚإرا وٕذ رذ٠ش اٌزظفؼ ِٓ ‪servlet tier‬‬
   ‫فخجئ اٌغشع ‪ PageCommand/PageContext‬فٟ ‪ HttpSession‬ثؾ١ش‬
  ‫٠ّىٕه إػبدح اسزخذاِٗ ػٕذِب ٠مَٛ اٌّسزخذَ ثؼٍّ١خ اٌزظفؼ ٌألِبَ أٚ‬
                                                              ‫ٌٍخٍف.‬

                           ‫سلُ اٌظفؾخ اٌؾبٌ١خ ٚ ػذد اٌظفؾبد اٌىٍٟ:‬

            ‫إرا أسدد أْ رؾزفظ ثّسبس سلُ اٌظفؾخ اٌؾبٌ١خ ٚػذد اٌظفؾبد‬
     ‫اٌىٍٟ,٠ّىٕه أْ رظٙش ٘زٖ اٌّؼٍِٛبد ٌٍّسزخذَ فّٓ أعً اٌزظفؼ‬
      ‫اٌّؼزّذ ػٍٝ االسزؼالَ فئْ اٌؾً األثسط أْ رسزؼًّ رؼٍ١ّخ ‪SQL‬‬
        ‫ٌزؾظٟ اٌؼذد ٌٍظفٛف فٟ إٌز١غخ ِسزخذِب اٌزبثغ )*(‪ COUNT‬أٚ‬
     ‫)‪ّ٠ٚ COUNT(column name‬ىٕه أْ رسزخٍض ثؼذ رٌه اٌؼذد اٌىٍٟ‬
       ‫ٌٍظفؾبد ثزمس١ُ ػذد اٌظفٛف ػٍٝ ؽغُ اٌظفؾخ وّب ٠ّىٕه أْ‬
  ‫رسزخذَ ٘زا االسزؼالَ فٟ وً ِشح رمَٛ ثطٍت اٌظفؾخ ٌىٓ سثّب ٠ىْٛ‬
‫٘زا األِش ال ٠ؾزًّ ٚوؾً ٚسط ٠ّىٕه أْ رسزؼًّ ٘زا االسزؼالَ ػٕذِب‬
   ‫رطٍت اٌظؾخ األٌٚٝ فمط ٚثٙزٖ اٌطش٠مخ فئْ اٌىٍفخ سٛف رضداد ثشىً‬
‫ِجبشش فٟ وً ِشح ٠ىْٛ ف١ٙب ٕ٘بن طٍت لشاءح/ثؾش ٌٍظفؾخ األٌٚٝ,ٚفٟ‬
    ‫ِؼظُ لٛاػذ اٌج١بٔبد ٠ّىٕه أْ رؼ١ف اٌزؼٍ١ّخ )*(‪ COUNT‬إٌٝ عذٚي‬
‫اٌؼّٛد فٟ اسزؼالِه ِٚٓ أعً لٛاػذ اٌج١بٔبد اٌزٟ ال رسزخذَ ٘زا األِش‬
               ‫ِضً ‪ MYSQL‬فؼٍ١ه أٔذ رسزخذَ اسزؼالَ ػذ ِٕفظً.‬

‫س١ىْٛ عٍت اٌظفؾخ األٌٚٝ أثطأ لٍ١ال ِٓ عٍت ثبلٟ اٌظفؾبد ٚفٟ ؽبي‬
   ‫وبْ ػذاد اٌظفؾخ غ١ش ػشٚسٞ أٚ أْ لبػذح اٌج١بٔبد ِزغ١شح ثشىً سش٠غ‬
      ‫ثؾ١ش ال ٠ّىٕه أْ رؾظٟ ػذد اٌظفؾبد فزغٕت رىٍفخ رٌه ثزخطٟ‬
                                             ‫اسزخذاَ اسزؼالَ اٌؼذ.‬
‫ٌزؼ١ف سلُ اٌظفؾخ ٚػذد اٌظفؾبد اٌىٍٟ إٌٝ آٌ١خ اٌزظفؼ ٌذ٠ه ػٍ١ه أْ‬
‫رشس اٌظٕف ‪ٌ PageContext‬زخضْ ٚرؾبفظ ػٍٝ ػذاد اٌظفؾخ ٚوزٌه اٌظٕف‬
   ‫‪ٌ PagingAdo‬زسزخذَ اسزؼالَ ػذ إػبفٟ ػٕذ اسزمجبي طٍت اٌظفؾخ‬
                                                            ‫‪. FIRST‬‬

      ‫إْ رشل١ُ اٌظفؾبد ٟ٘ طش٠مخ ِضبٌ١خ الداسح ِظبدس ِخذَ ِؾذٚدح ٚ‬
 ‫ِغّٛػبد ٔز١غخ وج١شح ٚغ١ش رٌه ِٓ األِٛس فّٓ أعً أْ رؼشف أٞ ِفَٙٛ‬
   ‫ػٍ١ه أْ رسزخذِٗ سٛاء وبْ اٌّؼزّذ ػٍٝ ِفَٙٛ اٌزاوشح اٌّخجئ١خ أٚ‬
  ‫اٌّؼزّذ ػٍٝ االسزؼالَ أٚ اٌذِظ ث١ّٕٙب فبػٍُ أْ رٌه ٠ؼٛد إٌٝ طج١ؼخ‬
     ‫اٌّسأٌخ ٚطفبد اٌج١بٔبد ٌزٌه ػٍ١ه ٚفمب ٌزٌه أْ رؾذد ؽغُ اٌزاوشح‬
‫اٌّزبؽخ ٌذ٠ه ٚاسزؼّبي االرظبي ثؾ١ش أْ ٘١ى١ٍخ رشل١ُ اٌظفؾبد ٠ّىٓ ْ‬
                                                   ‫٠مبثً أ٘ذاف أدائه.‬

				
DOCUMENT INFO