ãšã³ããªãŒ
ããã¯ãåå¿è
ã®Javaéçºè
ãèŠåŽããŠåœ¹ç«ã€äžé£ã®èšäºã«ãªããŸãã ãªã³ã©ã€ã³ã¹ãã¢ãäœæããäŸã瀺ããŸãã
æåã«å¿
èŠãªã®ã¯NetBeans 7.3ã§ãã
ãã¡ãããããŠã³ããŒãã§ããŸãã
ãªãåœŒã¯æ£ç¢ºã«ïŒ EEã®åå¿è
ã«ã¯ããããçæ³çãªéžæè¢ã ãšæããŸãã
䜿çšããããã¯ãããžãŒïŒ
1ïŒNetBeans 7.3;
2ïŒMaven;
3ïŒäŒæ¢ç¶æ
ã
4ïŒSpring MVC;
5ïŒJSP + JSTL;
6ïŒãµãŒãã¬ãããã»ãã·ã§ã³ãJavaBeanãXMLãªã©ã«é¢ããç¥èã
7ïŒHTML + CSSïŒããªãã®å¥œã¿ã«ã¯å°ãçŸããã¯ãããŸãããæ®ããã人ã«ãéãæã£ãã»ããè¯ãã§ã-ããªããšãµãŒããŒåŽã¯ååãªãã©ãã«ãæ±ããŠããŸãïŒ;
8ïŒJava SEïŒã³ã¬ã¯ã·ã§ã³ã®ç¥èãäŸå€ãåŠçããæ©èœ...äžè¬ã«ãæšæºã»ããïŒ;
9ïŒèšèšãã¿ãŒã³ã®ç¥èïŒDAOãå·¥å ŽïŒ;
10ïŒJPA;
11ïŒSVN;
12ïŒSQLïŒããŒã¿ããŒã¹ãæºããã¹ã¯ãªãããäœæããããïŒã
ã³ãŒããä¿åããå Žæãšãå人ãšå
±æããæ¹æ³ããå§ããŸãããã ãã¹ãŠã®åå¿è
ããªããžããªã«ã€ããŠç¥ã£ãŠããããã§ã¯ãªãããã®éšåã¯åœŒãã®ããã®ãã®ã ãšæããŸãã
SVN
ãªããžããªã®ãããªãã®ããããŸã-ãªã¢ãŒãã³ãŒãã¹ãã¬ãŒãžãµãŒããŒã
ãã¹ã課é¡ãäžãããããããã¢ãŒã«ã€ãã§éä¿¡ããå Žåãã»ãšãã©ã®å Žåéä¿¡ãããŸãã 圌ãã¯éãããªããããããŸãããããã£ãšããªãã«å€±æããã§ãããã
CVSãSVNãGitã®ããŸããŸãªãªããžããªããããŸãã åå¿è
ã«ã¯ãSVNãæé©ã ãšæããŸãã ãŸããããªãã«ãšã£ãŠã®äž»ãªããšã¯ãããäœã§ããããç¥ãããšã§ã¯ãªãããããé©çšã§ããããã«ããããšã§ãã ãããååã§ããéããæ®ãã¯çµéšãå¿
èŠã§ãã
ãã®ããã
www.assembla.com /ãšãããµã€ãããããŸããããã§ç»é²ããå¿
èŠããããŸãã ç»é²åŸããã®ãµã€ãã®ã¹ã¿ãŒãããŒãžã§ãªãŒãã³ãªããžããªãäœæããå¿
èŠããããŸãã ç»é²åŸã¯ã«ãªããŸã
ã ç¬èªã®ã¹ããŒã¹ãäœæããŸããæ¬¡ã¯å
¬éãããžã§ã¯ãã§ãæåã®ãããžã§ã¯ãã¯SubversionïŒSVNïŒã§ãã 圌ã«ååãä»ããŠäœæãå®äºããŸãã ãã®åŸãäžéšã®ãµã€ãã®é»ãããŒã«ãã®ååã衚瀺ãããŸããã¯ãªãã¯ãããšãã¹ããŒã¹ã®ããŒãžã«ãªãã€ã¬ã¯ããããŸãã ããœãŒã¹ã³ãŒã/ SVNãã¿ãããããŸãã ãã®ã¿ãã«ã¯ããããžã§ã¯ããžã®ãªã³ã¯ããããŸãã ä»ã®ãã¹ãŠã倱æããå Žåã¯ã
www.youtube.com /ã§ãããè¡ãæ¹æ³ã«é¢ãããããªãèŠã€ããŠã¿ãŠãã ããã
ãã®ãã¹ãŠã®åŸãããªãã®ã¹ããŒã¹ãžã®ãªã³ã¯ããããŸãã ãããäœã§ããããçè§£ããã«ã¯ããããžã§ã¯ãã®1ã€ãååŸããïŒãŸãã¯NetBeansã§äœããã®çš®é¡ã®ç©ºã®ãããžã§ã¯ããäœæããïŒå¿
èŠããããŸãã å³ãã¿ã³ã§ãããã¯ãªãã¯ãããšãã¡ãã¥ãŒã«ãããŒãžã§ã³ç®¡çã->ãSubversionãªããžããªã«ã€ã³ããŒããã衚瀺ãããŸãã ãã®åŸããªããžããªãžã®ãã¹ããããã€ã¢ãã°ããã¯ã¹ã衚瀺ãããŸã-ããã¯ãããœãŒã¹ã³ãŒããã¿ãã§ãµã€ãã§åä¿¡ãããªã³ã¯ã§ãã
次ã«ãã³ããããããããžã§ã¯ããå®å
šã«åé€ããŸãã æ¬¡ã«ããããžã§ã¯ããä¿åãããŠãããã©ã«ããŒã«ç§»åãããã¹ãŠãæ¬åœã«åé€ãããŠããããšã確èªããŸãã æ¬¡ã«ãNetBeansã«æ»ããã¡ãã¥ãŒããŒïŒ[ãã¡ã€ã«]ã[衚瀺]ã[ç·šé]ã[é·ç§»]ã[ãœãŒã¹]ãªã©ïŒã®ããã«ã«ãã[ã°ã«ãŒã]ã¿ããæ¢ããŸãã ãããŠããã®ãµãã¡ãã¥ãŒã«ã¯ãååŸãããããŸãã æ¬¡ã«ããã€ã¢ãã°ããã¯ã¹ã§ããªããžããªãžã®ãªã³ã¯ãæå®ããå¿
èŠããããŸãïŒããã¯[ãœãŒã¹ã³ãŒã]ã¿ãã§ãµã€ãã§åä¿¡ãããªã³ã¯ã§ãïŒããã©ã«ãã®ããŠã³ããŒããææ¡ããå ŽåããªããžããªããªãŒã§ãããžã§ã¯ããèŠã€ããŠéžæããå¿
èŠããããŸãããããžã§ã¯ããåçž®ãããŸãã ãããã³ãŒãã®äº€ææ¹æ³ã§ãã
ãããžã§ã¯ãã¯åžžã«ãªããžããªãšåæãã倿ŽãŸãã¯æ°ãããã¡ã€ã«ïŒãªããžããªäžã®ããŒãžã§ã³ãšã¯ç°ãªããã®ïŒãããŒã¯ããŸãã æŽæ°ããã«ã¯ãã³ã³ããã¹ãã¡ãã¥ãŒãåŒã³åºãå¿
èŠããããŸãã[ããŒãžã§ã³ç®¡ç]ã¿ãã«ã¯ããããžã§ã¯ãã§ã§ããããšã®å€§ããªãªã¹ãããããŸãã ãæŽæ°ããšã¯ããã¡ã€ã«ãæŽæ°ããããšã§ãã ãä¿®æ£ã-äœæããã³ãŒããŸãã¯ãªããžããªã«å€æŽããã³ãŒããæžãçããŸãã ããªã»ããã-ãªããžããªã®ããŒãžã§ã³ã«æ»ãããæ¯èŒã-åé€ããããã®ãšç°ãªãè¡ãžã®å€æŽã衚瀺ããŸãã ããã¯ãåžžã«äœ¿çšãããããŒã ã³ãŒãäº€ææ¹æ³ã§ãããæ
£ããå¿
èŠããããŸãã
éå§ãã
ã ããã誰ããšã³ãŒããå
±æãã誰ãã«èŠããããªããç§ãã¡ã¯ä»ããã®ããã®ããããªããŒã«ã§æŠè£
ããŠããã
ãã§ã«NetBeansãããŠã³ããŒãããSVNã§éãã§ããŸã-ãããä»äºã«åãæãããŸãããã ãããžã§ã¯ããäœæããŸãã [ãããžã§ã¯ãã®äœæ]ãã¯ãªãã¯ããŠãMaven-> Webã¢ããªã±ãŒã·ã§ã³ãéžæããŸãã ããªããæããã®ãšåŒãã§ãã ãããããã¯ãã¹ãŠããªãã®ç©ºæ³ã§ãã ãããã£ãŠãWebã¢ããªã±ãŒã·ã§ã³ãããããããžã§ã¯ãã®ã¢ã»ã³ããªãé²è¡äžã§ãããç®æšãããããããå®è£
ããæ¹æ³ãèããŸãã ã€ãŸããéçºè
ã¯ãã¢ããªã±ãŒã·ã§ã³ã®å€èгãã¢ãŒããã¯ãã£ãããã±ãŒãžããªãŒãªã©ãæ€èšããå¿
èŠããããŸãã ããã§ã®ã³ãŒãã®åèšè¡æ°ã¯çŽ4000è¡ã§ããäºåã«çŸããã¢ãŒããã¯ãã£ã«æ³šæããæ¹ãããã§ããããããããªããšãäœãã©ã®ããã«æ©èœããããããšãã°ãæåŸã«è³Œå
¥ããã¢ã€ãã ãã©ã®ããã«å¥è·¡çã«è¡šç€ºããããã賌å
¥ã®åèšéãèæ
®ããŠçè§£ã§ããŸããã ãããŠãäœããå®äºãŸãã¯è¿œå ããããã«æ±ããããå Žåãæåãããã¹ãŠãæžãæ¹ãç°¡åã§ããããšãããããŸãã
ãããŠãã¡ãããè¡åèšç»ãç«ãŠãå¿
èŠããããŸãã
ã ããïŒã¢ã¯ã·ã§ã³ãã©ã³
1ïŒãšã³ãã£ãã£ïŒãšã³ãã£ãã£ïŒ-ãšã³ãã£ãã£ãèšè¿°ããŸãã ããã¯POJOã§ããã¢ãããŒã·ã§ã³ïŒ@EntityïŒã䜿çšããããXMLãä»ããŠããŒã¿ããŒã¹ã«é¢é£ä»ããããã¯ã©ã¹ã§ãã JPAã䜿çšãããããjavax.persistenceãã€ã³ããŒãããå¿
èŠããããŸãã* Hibernate Persistence APIã䜿çšããªãã§ãã ããã䜿çšããŠããORMã©ã€ãã©ãªã倿Žããå Žåãã¯ã©ã¹ãæžãæããå¿
èŠããããJPAã¯Sunã®æšæºã§ãã JPAã«ã€ããŠã¯ãããªãèªèº«ã®èšèã§èšãããšãã§ããŸãïŒããã¯*é·çã*ãªããžã§ã¯ããæäœããããã®APIãæäŸããã©ã€ãã©ãªã§ããã€ãŸãããªããžã§ã¯ããããŒã¿ããŒã¹ã«äŸ¿å©ã«ä¿åã§ããŸãã ç§ã¯ã¢ããã€ã¹ãããããšãã§ããŸãïŒããã®ããã«å¥ã®ããã±ãŒãžãäœæãããšã³ãã£ãã£ãŸãã¯ãã¡ã€ã³ã«ååãä»ããŸã-ããªããæãããã«ãäž»ãªããšã¯ããªãã«ãããæç¢ºã«ããããšã§ãã æçµçã«ã¯ãedu.shop.model.domain.Customer.java edu.shop.model.domain.Notebook.javaã®ããã«ãªããŸãã
ãã®é
ç®ãæ€èšãããšãã¯ãçŽæ¥è©³çްã«èª¬æããŸãã ããã§ã®ã¿ã¹ã¯ã¯ãã¢ã¯ã·ã§ã³ãã©ã³ãæšå®ããããšã§ãã
2ïŒHibernateUtilãäœæããŸãïŒäžè¬ã«ãæ¥å°ŸèŸãŸãã¯æ¥é èŸUtilã¯ããã®ã¯ã©ã¹ã®ã³ãŒããæ®éçã§ãããå€ãã®ã¯ã©ã¹ã§äœ¿çšãããããšãæå³ããŸãïŒã
ãã®ãããHibernateUtilã§SessionFactoryããã¹ãããŸãã 圌ã¯ãããŒçŽã§ãã ãã®ã³ãŒãã¯ãçè«çã«ã¯ãèµ·åæã«ããŒã¿ããŒã¹ãžã®æ¥ç¶ã確ç«ããããŒã¿ããŒã¹ãšã®ã»ãã·ã§ã³ã®ã¿ãæäŸãããããã¢ããªã±ãŒã·ã§ã³å
šäœããç¬ç«ããŠããå¿
èŠããããŸãã ãŸãããã®ã¯ã©ã¹ã«ãšã³ãã£ãã£ã¯ã©ã¹ãç»é²ããŸãã ãã®ã¯ã©ã¹ã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã edu.shop.model.hbutil.HibernateUtil.javaãªã©ã®å¥ã®ããã±ãŒãžã«ãå
¥ããŸã
3ïŒDAOãäœæããŸãã
äœãæžãã®ïŒ ããŒã¿ããŒã¹ããååŸããããã®ãæžããŠããŸããããã®ããŒã¿ãã©ããªã£ãã®ããèããå¿
èŠã¯ãããŸãããçµæã¯éèŠã§ãã ããšãã°ãProductDAOã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ããã¡ãœãããèšè¿°ããŸã
ãªã¹ã<AnyEntity <>> getAllProductsïŒïŒ; 次ã«ãå®è£
ProductDAOImplãäœæããŸãã
ã¢ã€ãã¢ã¯äœã§ããïŒ ãã®ã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåãããã«ãããŒã¿ããŒã¹ããæ¬¡ã®ããŒã¿ãå¿
èŠã§ããããŒã¿ããŒã¹ã«ãããã¹ãŠã®ååããšèšãã§ãããã ã質åãªãããšçããŸãã æ¬¡ã«ã次ã®ã€ãã³ãã®éçºïŒã³ãŒãå
ã«ãããããŒã¿ããŒã¹ã«ã¯ãšãªãå®è¡ããå¿
èŠãããå Žåã¯ã次ã®ããã«èšè¿°ããŸãïŒ
*ã¡ãœãããžã®ã¢ããŒã«* .getAllProductsïŒïŒ; -ãããŠãããªãã¯ã³ã³ãã€ã©ãèªããªãããšãããããŸãããããŠãç§ã¯ãŸã ãã®ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
ãæžãæéããªããããããŸããã ãããŠãçµæã¯äœã§ããïŒ ãã¹ãŠãã³ã³ãã€ã«ããŸããããåäœããã³ãŒããããããŸããã ããã§ã¯ãEnumãšFactoryãã¿ãŒã³ãªã©ãé©çšããŸããããã¹ãŠã«æéããããŸãã äŸå€åŠçã«ç¹å¥ãªæ³šæãæããå°ãªããšããšã©ãŒããŒãžãçæããå¿
èŠãããã®ã¯DAOã§ãã å£ããã³ãŒããããã«èŠã€ããããšãã§ããŸãã ãã以å€ã®å Žåã¯ãåã«ãããã°ã«èŠãã¿ãŸãã
3ïŒSpring MVCãšã®äœæ¥ã¯ããããå§ãŸããŸãã ããã¯é·ã話ã§ãããå¥ã®èšäºã§ããã«å°å¿µããŸãã ç§ã¯ããã«èšããªããã°ãªããªã-ããã¯ãã®ã¢ããªã±ãŒã·ã§ã³ã§æãå°é£ã§ãã ããããããåçŽãªãªãã·ã§ã³ãMVCãã¿ãŒã³ãæ°ã«ããã«ãã¹ãŠã衚瀺ããæ¹æ³ã玹ä»ããŸãã
ã¹ã¯ãªããã¬ããã®äœ¿ç𿹿³ãèŠãŠã¿ãŸãããã
4ïŒããã«ãããããçš®é¡ã®ã°ããºããããžã§ã¯ãã«è¿œå ããè£å©ã¯ã©ã¹ããããŸãã賌å
¥ç·é¡ã®èšç®ã æåŸã«è³Œå
¥ããã¢ã€ãã ã¡ãœããã«åœ¹ç«ã€è£å©å€æ°ãããšãã°ãããŒã¿ããŒã¹ãã5000 UAH以äžããŸãã¯500以äžã®å®äŸ¡ãªããŒã¿ãåºåããŸãã ãã¹ãŠã®Asusã©ãããããã®åºåã ãã®é
ç®ã¯ãåã®é
ç®ãšå¯æ¥ã«é¢é£ããŠããŸãã
ãšããããããã«ã€ããŠè©³ããèŠãŠãããŸãããã æ®ãã®éšåã«ã€ããŠã¯å°ãåŸã§èª¬æããŸãã ã ãããç§ãã¡ã¯èšç»ãããèšç»ãæã£ãŠããŸãããã®å®è£
ã«é²ã¿ãŸãããã
ãšã³ãã£ãã£
ãããžã§ã¯ããäœæãããšã³ãã£ãã£ãå«ãããã±ãŒãžãäœæããŸããã edu.shop.entityã«ããŸãã ããã§ã次ã®ã¯ã©ã¹ãäœæããŸãã
ãæ³šæ 賌å
¥ããååãä¿åããããã¹ã±ããã¯ãããŒã¿ããŒã¹ã®ããŒãã«ã®ãããªãã®ã«ãªããŸãããã®äžã§ãããŒã¿ããŒã¹ãæäœããããã®åºæ¬ãããã€ã瀺ããŸãã å®éã®ã±ãŒã¹ã§ã¯ãã³ã¬ã¯ã·ã§ã³ã䜿çšããŠååãä¿ç®¡ããæ¹ãé©åã§ãã
1ïŒè£œå
2ïŒããŒã
3ïŒã«ã¡ã©
4ïŒäºçŽ
5ïŒã±ãŒãã«
6ïŒé¡§å®¢
7ïŒã«ãŒã
ãšã³ãã£ãã£ã¯ã©ã¹ãšã¯äœãã«ã€ããŠå°ã話ããŸãããã
ãšã³ãã£ãã£-ã¢ãããŒã·ã§ã³ïŒ@EntityïŒãŸãã¯XMLã䜿çšããŠããŒã¿ããŒã¹ã«é¢é£ä»ããããPOJOã¯ã©ã¹ã ãã®ãããªã¯ã©ã¹ã«ã¯æ¬¡ã®èŠä»¶ã課ãããŸãã
-空ã®ã³ã³ã¹ãã©ã¯ã¿ãŒïŒpublicãŸãã¯protectedïŒãå¿
èŠã§ã;
-ãã¹ããã€ã³ã¿ãŒãã§ã€ã¹ããŸãã¯åæã§ããŸããã
-ãã¡ã€ãã«ã«ããããšã¯ã§ããããã¡ã€ãã«ãã£ãŒã«ã/ããããã£ãå«ããããšã¯ã§ããŸããã
-å°ãªããšã1ã€ã®@ Idãã£ãŒã«ããå«ãŸããŠããå¿
èŠããããŸãã
ãã®å Žåããšã³ãã£ãã£ã¯æ¬¡ã®ããšãã§ããŸãã
-空ã§ãªãã³ã³ã¹ãã©ã¯ã¿ãŒãå«ãŸããŸãã
-ç¶æ¿ãããç¶æ¿ãããã
-ä»ã®ã¡ãœãããå«ã¿ãã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ããŸãã
ãšã³ãã£ãã£ã¯çžäºã«é¢é£ä»ããããšãã§ããŸãã1察1ã1察å€ãå€å¯Ÿ1ãããã³å€å¯Ÿå€ã§ãã
泚éã䜿çšããŸãã ãããŠãããã«2ã€ã®æ¹æ³ã§èª¬æããæ©äŒããããŸãã ãã£ãŒã«ãã®ããäžã«æ³šéãæžãããã²ãã¿ãŒã®äžã«æ³šéãæžããŸãã ç§ã¯äžã€ã®ããšãèšããŸãïŒã²ãã¿ãŒã«æ£ããæžãããã«ãããªãã¯Googleã§çç±ãå°ããŸãã ããã§ãã¹ãŠã®ãããã¯ãå®å
šã«èª¬æããããšã¯ã§ããŸããã
ãã1ã€èšãããããšããããŸãã ãããè¡ãã«ã¯ããšã³ãã£ãã£ã¯ã©ã¹ãèšè¿°ãã2ã€ã®äŸã瀺ãå¿
èŠããããŸãã æåã®äŸïŒ
ã³ãŒãèªäœã«ã³ã¡ã³ããæžããŸããã
import java.io.Serializable; import javax.persistence.*; import javax.validation.constraints.Size; @Entity
2çªç®ã®æ¹æ³ïŒã²ãã¿ãŒãäžæžãããŸãã ã³ãŒãã®èª¬æãèŠãŠãã ããã
import java.io.Serializable; import javax.persistence.*; @Entity
ãããã£ãŠããšã³ãã£ãã£ã¯ã©ã¹ã®2ã€ã®äŸããããŸãã ãããã®äŸã䜿çšããŠæ®ããäœæããŸãã æ¬¡ã®ãããªãã£ãŒã«ãïŒã¢ãã«ãçºè¡å¹Žãååãã³ã¹ã-ãã¹ãŠããªãã®æ³ååã«ã å¿
ã[å©çšå¯èœ]ãã£ãŒã«ãïŒç¿»èš³ã§å©çšå¯èœïŒãå«ããŠãã ããã åŸã§äŸ¿å©ã«ãªããŸãã ããŒã«å€ã«ããŠãquantityãšããååã®åã远å ã§ããŸãã ããã¯ãã¹ãŠäŸ¿å©ã§ãã
次ã«ãHibernateUtilã®äŸã瀺ããŸã
package edu.shumenko.hibernate; import edu.shumenko.entity.BookEntity; import edu.shumenko.entity.CableEntity; import edu.shumenko.entity.CameraEntity; import edu.shumenko.entity.CartEntity; import edu.shumenko.entity.CustomerEntity; import edu.shumenko.entity.NotebookEntity; import edu.shumenko.entity.ProductEntity; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory; public class HibernateUtil {
DAO
次ã®ããŒãã«é²ã¿ãŸãããã DAOãšã¯äœã§ããã ããã¯ãã¶ã€ã³ãã¿ãŒã³ã§ãã
ãã®æå³ïŒ
-ã·ã¹ãã å
ã®ããŒã¿ããŒã¹ãžã®ãã¹ãŠã®ã¢ã¯ã»ã¹ã¯ãã«ãã»ã«åã®ããã«DAOãä»ããŠè¡ãããŸãã
-åDAOã€ã³ã¹ã¿ã³ã¹ã¯ã1ã€ã®ãã©ã€ããªãã¡ã€ã³ãªããžã§ã¯ããŸãã¯ãšã³ãã£ãã£ãæ
åœããŸãã ãã¡ã€ã³ãªããžã§ã¯ãã«ç¬ç«ããã©ã€ããµã€ã¯ã«ãããå Žåã¯ãç¬èªã®DAOãå¿
èŠã§ãã
-DAOã¯ããã¡ã€ã³ãªããžã§ã¯ãã®äœæãèªã¿åãïŒäž»ããŒã«ããïŒãæŽæ°ãããã³åé€ïŒã€ãŸããCRUDïŒäœæãèªã¿åããæŽæ°ãåé€ïŒïŒã®æäœãæ
åœããŸãã
-DAOã¯ãäž»ããŒä»¥å€ã®åºæºã«åºã¥ããŠèŠæ±ãèš±å¯ããå ŽåããããŸãã ãã¡ã€ã³ããŒããã¡ã€ã³ããŒãªã©ã®ã¡ãœãããåç
§ããŸãã éåžžãfinderã¡ãœããã¯ãDAOãæ
åœãããã¡ã€ã³ãªããžã§ã¯ãã®ã³ã¬ã¯ã·ã§ã³ãè¿ããŸãã
-DAOã¯ããã©ã³ã¶ã¯ã·ã§ã³ãã»ãã·ã§ã³ããŸãã¯æ¥ç¶ãåŠçããŸããã ããã¯ãæè»æ§ãæäŸããããã«DAOã®å€éšã§è¡ãããŸãã
詳现ã¯åžžã«Googleã«äŒããŸãã
ä»ã®ãšããã補åã®DAOãäœæããŸãã
ã ãããç§ãã¡ãäœãå¿
èŠãªã®ããèããŠãã ããã ProductããŒãã«ã«ã¯ãIdãnameProductãavailable + amount + actionForServletã®4ã€ã®ãã£ãŒã«ãããããŸãã ãŠã§ããµã€ãã§ã«ããŽãªãäœæããããã«å¿
èŠã«ãªããŸãã æåŸã®ãã£ãŒã«ãã«ã€ããŠã¯ãŸã æ°ã«ããŸããã å¿
èŠãªã®ã¯ã補åã®ãªã¹ããååŸããããšã ãã§ãã
ã€ã³ã¿ãŒãã§ã€ã¹ãæžã
public interface ProductDAO { ProductDAO INSTANCE_PRODUCT= new ProductDAOImpl(); List<Product> getProducts();
ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
ã 説æã«ã€ããŠã¯ãã³ãŒããåç
§ããŠãã ããã
package edu.shop.model.dao; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; public class ProductDAOImpl implements ProductDAO { @Override public List<Product> getProducts() { List<Product> result = null;
ãã®ãããããŒã¿ããŒã¹ããããŒã¿ãåä¿¡ããæ©äŒãåŸãããŸããã ã¹ã¯ãªããã¬ããã䜿çšããŠãç°¡åãªfor-eachã«ãŒããäœæããindex.jspããŒãžã«è£œåã衚瀺ã§ããŸãã
<table border="2" width="2" cellspacing="2" cellpadding="2"> <thead> <h3></h3> </thead> <tbody> <tr> <th></th> //INSTANCE_PRODUCT ? // ProductDAO , ProductDAOImpl // -, . //ProductDAO INSTANCE_PRODUCT= new ProductDAOImpl(); <% for (Product product :ProductDAO.INSTANCE_PRODUCT.getProducts()) {%> <td><a href="<%=product.getActionForServlet()%>"><%=product.getName()%></a></td> <%}%> </tr> <tr> <th></th> <% for (Product product : ProductDAO.INSTANCE_PRODUCT.getProducts()) {%> <td><%=product.getAvailable()%></td> <%}%> </tr> </tbody> </table>
ããããããã¯åããŠã§ãããäžè¬çã«ããããããšã¯æªãã§ãã ããã¯ãMVCãã¿ãŒã³ã«éåããŠããŸãã æ£ããè¡ãæ¹æ³æ¬¡ã®ã¬ãã¹ã³ã§æåŸ
ãããã説æããŸãã 2çªç®ã®ã¬ãã¹ã³ã§ã¯Springãæ±ãã3çªç®ã®ã¬ãã¹ã³ã§ã¯Factoryãã¿ãŒã³ã«è§ŠããŠãäŒæ¢ç¶æ
ãæãäžããŸãã ãã£ãã¡ãªäººã®ããã«ãããŒã¿ããŒã¹ããåé€ããããŒã¿ããŒã¹ã«ä¿åããããŒã¿ããŒã¹ãããã¹ãŠãå®å
šã«åé€ããæ¹æ³ã玹ä»ããŸãã ããŠãããããã¹ãŠã¢ããªã±ãŒã·ã§ã³å
šäœãšããåãããåŸã§è©³çްãªã¬ãã¥ãŒãæ®ãæ¹æ³ã
DBã«ä¿å
public void addItemToCart(CartEntity cart) { Session session = HibernateUtil.getSessionFactory().openSession(); try { session.beginTransaction().begin(); session.save(cart); session.getTransaction().commit(); } catch (Exception ex) { ex.printStackTrace(); } finally { if (session != null) { session.close(); } } }
IDã§ããŒã¿ããŒã¹ããåé€
public void deleteItemFromCart(Integer id) { Session session = HibernateUtil.getSessionFactory().openSession(); try { session.beginTransaction().begin(); CartEntity itemDelete = (CartEntity) session.get(CartEntity.class, id); session.delete(itemDelete); session.getTransaction().commit(); } catch (Exception ex) { ex.printStackTrace(); } finally { if (session != null) { session.close(); } } }
ããŒã¿ããŒã¹ããIDãåé€ããŠããŸãã
public void deleteAllItemToCart(List<Integer> idAllItemsInCart) { Session session = HibernateUtil.getSessionFactory().openSession(); try { session.beginTransaction().begin(); for(Integer id:idAllItemsInCart){ CartEntity itemDelete = (CartEntity) session.get(CartEntity.class, id); session.delete(itemDelete); } session.getTransaction().commit(); } catch (Exception ex) { ex.printStackTrace(); } finally { if (session != null) { session.close(); } } }
Hibernateèšå®ãã¡ã€ã«ãå¿
èŠã«ãªããŸãã ããŒããŒã«ã·ã§ãããäœæããŸãã ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã¯ãããããrootãšpassã§ãã ããŸããããªãå Žå-åæºããªãã§ãã ãã-ããã«æéããããŸãã
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property> <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property> <property name="hibernate.connection.url">jdbc:derby:
ããŒã¿ããŒã¹ã®èšå
¥æ¹æ³ã«ã€ããŠã¯åŸã§èª¬æããŸãã æåã§å
¥åã§ããŸãã ãŸãã¯ã次ã®ã¬ãã¹ã³ãåŸ
ã¡ãŸãã