ã¬ã¤ã¤ã¨ã¢ãã«
ã¢ããªã±ã¼ã·ã§ã³ãã¬ã¤ã¤åå²ããå ´åã
ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ -> ãã¸ãã¹ãã¸ãã¯å±¤ -> ãã¼ã¿ã¢ã¯ã»ã¹å±¤
ã®ããã«åããã®ãä¸è¬çã§ã¯ãªããã¨æãã¾ãã
ããã§ãç¢å°ã¯ãä¾åé¢ä¿ã表ãã¦ãã¾ããä¾ãã°ããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã¯ããã¸ãã¹ãã¸ãã¯å±¤ã«ä¾åãã¦ãã¦ããã¸ãã¹ãã¸ãã¯å±¤ã¯ããã¼ã¿ã¢ã¯ã»ã¹å±¤ã«ä¾åãã¦ãã¾ãã
ç¢å°ã®åãã¦ããªãã»ãã«ã¯ä¾åãã¦ãã¾ãããä¾ãã°ããã¸ãã¹ãã¸ãã¯å±¤ã¯ããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã«ä¾åãã¦ãã¾ããã
誤解ãå¤ãããããªããã¨æãã®ã¯ãã¬ã¤ã¤ã¨ã¢ãã«ãæ··åãããã¨ã§ããä¸çªå¤ãè¦ãããã®ã¯ããã¸ãã¹ãã¸ãã¯å±¤ã¨ãã¡ã¤ã³ã¢ãã«ã®æ··åã§ãã
ã¢ãã«ã¯ãåå±¤ãæµãã¦ãããã¼ã¿(+ ãã¸ãã¯)ã§ãããã©ã®å±¤ã«ãä¾åãã¾ãããéã«å±¤ã¯ã¢ãã«ã«ä¾åãããã¨ã«ãªãã¾ãã
ã¢ãã«ã¯ããã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã¨ãã¡ã¤ã³ã¢ãã«ã«åããã¾ããæ¬å½ã¯ãERã¢ãã«ãããã®ã§ãããããã§ã¯å¯¾è±¡å¤ã¨ãã¾ããããã§ã®ã¢ãã«ã¯ãå¤é¨ã¹ãã¼ããæ¦å¿µã¹ãã¼ããå
é¨ã¹ãã¼ãã¨ãããã¦ãããã®ã«å¯¾å¿ãã¾ãã
ãã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã¨ãã¡ã¤ã³ã¢ãã«ãä¸è´ããå ´åãããã¾ãããæ¦å¿µçã«ã¯åãã¦ããæ¹ãããã§ãããããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã«ã¯ããã¡ã¤ã³ã¢ãã«ã®è¤éãªæ§é ãè¦ããã¹ãã§ã¯ããã¾ãããããã¾ã§ãããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã«ã¨ã£ã¦æãæ±ãããããã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã使ãã¹ãã§ãã
ä¾ãã°ã徿¥å¡ã®ç®¡çç»é¢ã§å¾æ¥å¡ã®æå±ããé¨ç½²åã表示ããå¿
è¦ããã£ãã¨ãã¾ãããããã¡ã¤ã³ã¢ãã«ã¨ãã¦ã¯ã徿¥å¡ãªãã¸ã§ã¯ãããé¨ç½²ãªãã¸ã§ã¯ããåå¾ãããããã鍿¸åãåå¾ãããã¨ã«ãªãã¾ãã
ãã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã®å ´åã¯ã徿¥å¡ãã¬ã¼ã³ãã¼ã·ã§ã³ãªãã¸ã§ã¯ãã«é¨ç½²åãæããããã¨ã«ãªãã¾ãã
ãã®ãããªãã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã¨ãã¡ã¤ã³ã¢ãã«ã®å¤æãè¡ãã®ãDxo(Data eXchange Object)ã§ããããã¯ãç§ãä»ããååã§ããããã¡ã¤ã³ã¢ãã«ã¨ERã¢ãã«ã®å¤æãè¡ãDaoã¨æ¯è¼ããã¨åãããããã®ã§ã¯ãªããã¨æãã¾ãã
ãã¸ãã¹ãã¸ãã¯å±¤ã§ã¯ããã¼ã¿ã¢ã¯ã»ã¹å±¤ããåå¾ãããã¡ã¤ã³ã¢ãã«ãDxoã使ã£ã¦ãã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã«å¤æãã¦ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã«æ¸¡ããéã«ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ããåãåã£ããã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ãDxoã使ã£ã¦ããã¡ã¤ã³ã¢ãã«ã«å¤æ´ãã¦ãã¸ãã¹ãã¸ãã¯ãå®è¡ãã¾ãã
Dxoã使ã坿¬¡çãªå¹æã¨ãã¦ããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã§ã®lazy loadingãé¿ãããã¨ãã§ããã¨ãããã®ãããã¾ãã
ä¾ãã°ãå
ç¨ã®å¾æ¥å¡ãªãã¸ã§ã¯ãããé¨ç½²ãåå¾ããé¨åã«lazy loadingãé©ç¨ããã¦ããã¨ãã¾ããããDxoã使ããªãå ´åã§ãããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã§ã¯ãemployee.department.departmentNameã®ããã«é¨ç½²åãåå¾ãããã¨ãã§ãã¾ãããlazy loadingãé©ç¨ããã¦ããã¨departmentãåç
§ããç¬éã«é¨ç½²ãåå¾ããããã®SQLæãçºè¡ãããå±éºæ§ãããã¾ãããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ãä¾ãã°JSPã§ã¨ã©ã¼ãèµ·ããã¨é©åãªã¨ã©ã¼è¡¨ç¤ºããããã¨ãé£ãããã¨ãå¤ãã®ã§ãã§ããéããã®ãããªç¶æ
ã¯é¿ããªããã°ãªãã¾ãããDxoã使ãã¨ãã¸ãã¹ãã¸ãã¯å±¤ã§ãã¼ã¿ã®åå¾(徿¥å¡ãã¬ã¼ã³ãã¼ã·ã§ã³ãªãã¸ã§ã¯ãã®é¨ç½²åã«é¨ç½²ãªãã¸ã§ã¯ãã®é¨ç½²åãè¨å®ããã)ãçµãã£ã¦ããããããã®ãããªã¨ã©ã¼ãé¿ãããã¨ãã§ãã¾ãã
æ´çããã¨ããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã¯ããã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ã¨ãã¸ãã¹ãã¸ãã¯å±¤ã«ä¾åãã¾ãããã¸ãã¹ãã¸ãã¯å±¤ã¯ããã¡ã¤ã³ã¢ãã«ã¨ãã¼ã¿ã¢ã¯ã»ã¹å±¤ã«ä¾åãã¾ãããã¼ã¿ã¢ã¯ã»ã¹å±¤ã¯ããã¡ã¤ã³ã¢ãã«ã«ä¾åãã¾ãããã¬ã¼ã³ãã¼ã·ã§ã³ã¢ãã«ããã¡ã¤ã³ã¢ãã«ã®ã©ã¡ããã©ã®å±¤ã«ããäºãã®ã¢ãã«ã«ãä¾åãã¾ããã
Dxoã§ã®å¦çã¯å¤ãã®å ´åãæ©æ¢°çã«åºæ¥ãå¯è½æ§ãããã¾ããSeasar2ã§ã¯ãã¢ããã¼ã·ã§ã³ã¨AOPãå©ç¨ãã¦ãS2Daoã®ããã«Dxoã§ã®å¦çãèªååãããã¬ã¼ã ã¯ã¼ã¯S2Dxoãæä¾ããäºå®ã§ãã
ããã§ã¯ããã¸ãã¹ãã¸ãã¯å±¤ã§ã¯ã©ã®ãããªå¦çãè¡ãã®ã§ãããããããã«ã¤ãã¦ã¯ã¾ãä»åº¦ã話ãã¾ãã
è£è¶³:lazy loading
lazy loadingã¨ã¯ããã¼ã¿ã®ãã¼ã(ãã§ãã)ãå¿
è¦ã«ãªãã¾ã§é
ãããææ³ã§ãããã¡ã¤ã³ã¢ãã«ã¯ãé¢é£ããããã§ããã¹ãããå¯è½æ§ãããã¾ãããããã¹ã¦ã®é¢é£ãæåã«è§£æ±ºããã¨ã¨ãã§ããªããã¨ã«ãªããã¨ãããã®ã§ããã®ãããªææ³ãããã¾ãããã¡ãããä¸è¦ãªãã§ãããæãããã¨ã§ãããã©ã¼ãã³ã¹ãåä¸ãããã¨ããç®çãããã¾ãã
lazy loadingã¯O/R Mapperã«ãã£ã¦èªåçã«è§£æ±ºããã¾ãã
ä¾ãã°ãEmployeeã¯ã©ã¹ã«departmentããããã£ããã£ãå ´åãdepartmentããããã£ã«ã¢ã¯ã»ã¹ããã¨ãã«ãééç(æèãã)ã«å¦çãããã®ã§ãã
Dxoã使ããªãå ´åããã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã§departmentããããã£ã«ã¢ã¯ã»ã¹ããã¨ãã«ãééçã«O/R Mapperã«ãããã§ãããè¡ããSQLæãç¥ããªããã¡ã«çºè¡ãããå¯è½æ§ãããã®ã§ãã