ããã¯ãšã³ãéçºè
ãªãå¿
ãç¥ã£ãŠããã¹ã ã¹ããªã³ã°ããŒã¿ã¢ã¯ã»ã¹æè¡ Part.2
ð£ ã確èªãã ããïŒ æ¬è¬çŸ©ã¯Javaã¹ããªã³ã°å®å
šæ»ç¥ã·ãªãŒãºã®ç¬¬7匟 ã§ããåªé
ãªå
åŒãã¡ïŒWoowa BrothersïŒæå¹Žå°æè¡çäºããã ã»ãšã³ãã³ã®ã¹ããªã³ã°å®å
šæ»ç¥ããŒããããããŸãã確èªãã ããã ⢠ããŒãããããªã³ã¯: https://www.inflearn.com/roadmaps/373 (ã¯ãªãã¯ã§ç§»å)
VIDEO
ãã ã»ãšã³ãã³ã®ã¹ããªã³ã°DB ããŒã¿ã¢ã¯ã»ã¹æè¡ã宿ããã
ããã¯ãšã³ãã®Webã¢ããªã±ãŒã·ã§ã³ãæ£ããéçºããã«ã¯ãHTTPãããŒã¹ãšããMVCãšãDBãããŒã¹ãšããããŒã¿ã¢ã¯ã»ã¹æè¡ãšãã2ã€ã®å€§ããªè»žã宿ãããªããã°ãªããŸãããç§ãã¡ã¯ãããŸã§ã®è¬çŸ©ãéããŠHTTPãšã¹ããªã³ã°MVCã宿ãããã®ã§ãããããã¯æ®ãã®äžã€ã®è»žã§ããã¹ããªã³ã°DBããŒã¿ã¢ã¯ã»ã¹æè¡ã宿ãããå¿
èŠããããŸãã
â
äºåç¥èã確èªããŠãã ããã
ååã®è¬çŸ©ã§ãã<ã¹ããªã³ã°DB 第1ç·š> ãéããŠãã¹ããªã³ã°DBã®åçãšæ§é ãçè§£ããã確èªããŠãã ããã
1. ã¹ããªã³ã°ããŒã¿ã¢ã¯ã»ã¹æè¡ã®åºæ¬åçã®çè§£ 2. å®åã§æŽ»çšãããã³ãŒãã§çŽæ¥éçº
ã¹ããªã³ã°DB1ç·šã®è¬çŸ©ãéããŠãDBã¢ã¯ã»ã¹æè¡ã®æ žå¿åçãšæ§é ãçè§£ããŸãããä»åã®ã¹ããªã³ã°DB2ç·šã§ã¯ã1ç·šã®åºç€ã®äžã«ãå®åã§å¿
ãå¿
èŠãšãªãæ§ã
ãªæŽ»çšæè¡ãåŠç¿ããŸãã2ç·šã¯å€§ãã3ã€ã®éšåã«åãããŠããŸãã
1) æ§ã
ãªããŒã¿ã¢ã¯ã»ã¹æè¡ã®çè§£
JdbcTemplateãMyBatisãJPAãSpring Data JPAãQuerydslãšãã£ããå®åã§äž»ã«äœ¿çšãããæ§ã
ãªããŒã¿ã¢ã¯ã»ã¹æè¡ããå®è·µçãªäŸé¡ãéããŠæ®µéçã«çºå±ãããªããåŠç¿ããŸãããã®éçšãéããŠãããããã®æè¡ããªãå¿
èŠãªã®ãããããŠåæè¡ã®é·æãšçæãã³ãŒãã§éçºããªããèªç¶ã«çè§£ããããšãã§ããŸãã
2) ããŒã¿ã¢ã¯ã»ã¹æè¡ãšãã¹ã
ããŒã¿ã¢ã¯ã»ã¹æè¡ã¯ãçµå±ã®ãšããããŒã¿ããŒã¹ã§ããŒã¿ã管çããç®çã§äœ¿çšãããŸãããããã£ãŠãããŒã¿ã¢ã¯ã»ã¹æè¡ãå®éã®ããŒã¿ããŒã¹ã«ããŒã¿ãæ£ããä¿åããç
§äŒã§ãããã確èªããªããã°ãªããŸãããè¬çŸ©ã§ã¯ãããŒã¿ããŒã¹ãé£åãããç¶æ³ã§ãã¹ããã©ã®ããã«è¡ãã®ãè¯ãããæ®µéçã«èª¬æããŸãã
3) ã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ã®æ·±ãçè§£
ã¹ããªã³ã°DB1ç·šã§ã¯ãã¹ããªã³ã°ãæäŸãããã©ã³ã¶ã¯ã·ã§ã³æ©èœããªãå¿
èŠãªã®ãããããŠã©ã®ããã«åäœããã®ãããã®å
éšåçã«ã€ããŠåŠã³ãŸãããä»åã¯ãã¹ããªã³ã°ã®ãã©ã³ã¶ã¯ã·ã§ã³ãããæ·±ãåŠç¿ããå®åã§ã®æŽ»ç𿹿³ã«ã€ããŠæ¢ã£ãŠãããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³AOPäœ¿çšæã®å®åäžã®æ³šæäºé
ã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ã®æ§ã
ãªãªãã·ã§ã³
äŸå€åŠçãšã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããã³ããŒã«ããã¯ãããå
éšåç
ãã©ã³ã¶ã¯ã·ã§ã³äŒæãªãã·ã§ã³ãšå
éšåäœæ¹åŒ
è¬çŸ©ã®ç®æš
ç®æšïŒ å®åã®ããã¯ãšã³ãã¢ããªã±ãŒã·ã§ã³ãéçºããéã«å¿
èŠãªãèšå€§ãªDBããŒã¿ã¢ã¯ã»ã¹æè¡ã宿ãããããšããã®è¬çŸ©ã®ç®æšã§ãã
åºç€ããå®åãŸã§ïŒ å®åéçºã®ããã®å
容ãäžå¿ã§ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºçµéšããªãéçºè
ã§ãé©å¿ã§ãããããæ®µéçã«æ§æããŸããããªããã¹ããªã³ã°DB第1éšãå
ã«åè¬ããŠãããã¹ããªã³ã°DB第2éšãåŠç¿ããå¿
èŠããããŸãã
å®åäŸé¡äžå¿ïŒ å®åã§Springã䜿çšããŠããã¯ãšã³ãã¢ããªã±ãŒã·ã§ã³ãéçºããéã«å¿
èŠãªããŒã¿ã¢ã¯ã»ã¹æè¡ããäŸé¡ãéããŠèªç¶ã«åŠç¿ããå®åã«ãããBest PracticeãäŒæããŸãã
ç°¡æœãïŒ å®åã§äœ¿çšãããªãå€ãæ©èœã¯æãåã£ãŠé€å€ããŸãããææ°ã®å®åã§äž»ã«äœ¿çšãããå
容ãäžå¿ã«èª¬æããŸãã
è¬çŸ©å
容
ããŒã¿ã¢ã¯ã»ã¹æè¡ - JdbcTemplate
SQLãçŽæ¥äœ¿çšããå Žåãã¹ããªã³ã°ãæäŸããJdbcTemplateã¯è¯ãéžæè¢ã§ãããã®æè¡ã¯JDBCãéåžžã«äŸ¿å©ã«äœ¿çšã§ãããããµããŒãããŠãããŸãããããŠãJDBCãçŽæ¥äœ¿çšããéã«çºçããã»ãšãã©ã®ååŸ©äœæ¥ã代ããã«åŠçããŠãããŸãã * éçºè
ã¯SQLãäœæããæž¡ããã©ã¡ãŒã¿ãå®çŸ©ããå¿çå€ããããã³ã°ããã ãã§æžã¿ãŸãã * å®éã«åäœãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«JdbcTemplateãé©çšããªãããè©²åœæè¡ã®é·æãšçæãçè§£ããŸãã
ããŒã¿ã¢ã¯ã»ã¹æè¡ - MyBatis
MyBatisã¯ãåè¿°ããJdbcTemplateãããå€ãã®æ©èœãæäŸããŸããJdbcTemplateãšæ¯èŒããŠMyBatisã®æãé
åçãªç¹ã¯ãSQLãXMLã«äŸ¿å©ã«èšè¿°ã§ããããšããããŠåçã¯ãšãªãéåžžã«äŸ¿å©ã«äœæã§ããç¹ã§ããè¬çŸ©ã§ã¯ãå®éã«åäœãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«MyBatisãçŽæ¥ã³ãŒãã§é©çšããªããããã®æè¡ã®é·æãšçæãçè§£ããããšãã§ããŸãã
ããŒã¿ã¢ã¯ã»ã¹æè¡ - JPA
ã¹ããªã³ã°ãšJPAã¯ãJavaãšã³ã¿ãŒãã©ã€ãºïŒäŒæ¥ïŒåžå Žã®äž»åæè¡ã§ããã¹ããªã³ã°ãDIã³ã³ãããå«ãã¢ããªã±ãŒã·ã§ã³å
šè¬ã®å€æ§ãªæ©èœãæäŸããã®ã«å¯ŸããJPAã¯ORMããŒã¿ã¢ã¯ã»ã¹æè¡ãæäŸããŸããJPAã¯ã¹ããªã³ã°ãšåããããèšå€§ã§ãåŠç¿ãã¹ãå
容ãå€ãã§ãããäžåºŠåŠãã§ããã°ããŒã¿ã¢ã¯ã»ã¹æè¡ã«ãããŠéåžžã«å€§ããªçç£æ§ã®åäžãåŸãããšãã§ããŸããããã§ã¯ããããã®æè¡ã®åºæ¬æ©èœãšããªããã®æè¡ã䜿çšãã¹ããªã®ããããããã®é·æã»çæãšå
šäœåã確èªããŸãã
ããŒã¿ã¢ã¯ã»ã¹æè¡ - ã¹ããªã³ã°ããŒã¿JPA
ã¹ããªã³ã°ããŒã¿JPAã¯ãJPAããã䟿å©ã«äœ¿ããããã«ãµããŒãããæè¡ã§ããç°¡åã«èšããšãåºæ¬çãªCRUDæ©èœããã¹ãŠæäŸããŠãããããéçºè
ãäœæãã¹ãéçºã³ãŒããç»æçã«æžããããšãã§ããŸããè¬çŸ©ã§ã¯ãå®éã«åäœãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«ã¹ããªã³ã°ããŒã¿JPAãçŽæ¥ã³ãŒãã§é©çšããªããããã®æè¡ã®é·æãšçæãçè§£ããããšãã§ããŸãã
ããŒã¿ã¢ã¯ã»ã¹æè¡ - Querydsl
JPAã¯è€éãªã¯ãšãªãåçã¯ãšãªãåŠçããã®ãå°é£ã§ããQuerydslã䜿çšããã°ããã®ãããªåé¡ãéåžžã«äŸ¿å©ã«è§£æ±ºã§ããŸããå®åã§JPAã䜿çšãããªããå¿
ã䜿ãã¹ãããããã®æè¡ã§ããè¬çŸ©ã§ã¯ãå®éã«åäœãããŠã§ãã¢ããªã±ãŒã·ã§ã³ã«QuerydslãçŽæ¥ã³ãŒãã§é©çšããªããããã®æè¡ã®é·æãšçæãçè§£ããããšãã§ããŸãã
ããŒã¿ã¢ã¯ã»ã¹æè¡ - ãã¹ã
ããŒã¿ã¢ã¯ã»ã¹æè¡ã¯ãçµå±ã®ãšããããŒã¿ããŒã¹ã§ããŒã¿ã管çããç®çã§äœ¿çšãããŸãããããã£ãŠãããŒã¿ã¢ã¯ã»ã¹æè¡ãå®éã®ããŒã¿ããŒã¹ã«ããŒã¿ãæ£ããä¿åããç
§äŒã§ãããã確èªããå¿
èŠããããŸããè¬çŸ©ã§ã¯ãããŒã¿ããŒã¹ãé£åãããç¶æ³ã§ãã¹ããã©ã®ããã«è¡ãã®ãè¯ãããæ®µéçã«èª¬æããŸããäŸãã°ãããŒã¿ããŒã¹ã«é£åãããã¹ããã©ã®ããã«æ§æãããã説æãã@Transactionalãåã蟌ã¿ã¢ãŒãDBãã©ã®ããã«åäœããããã³ãŒãã§ç¢ºèªããŸãã
ã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ã®çè§£
DB 1ç·šã§ã¯ãã¹ããªã³ã°ãæäŸãããã©ã³ã¶ã¯ã·ã§ã³æ©èœããªãå¿
èŠãªã®ãããããŠã©ã®ããã«åäœããã®ããšããå
éšåçã«ã€ããŠåŠã³ãŸãããä»åã¯ãã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³AOPã䜿çšããéã®å®åäžã®æ³šæäºé
ãã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ã®å€æ§ãªãªãã·ã§ã³ãäŸå€ãçºçããéã«ã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããã³ããŒã«ããã¯ãããå
éšåçãªã©ãã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ãæäŸããæ§ã
ãªæ©èœãæ·±ã詳ããåŠãã§ãããŸãã
ã¹ããªã³ã°ãã©ã³ã¶ã¯ã·ã§ã³ã®äŒæ
ã¹ããªã³ã°ã®ãã©ã³ã¶ã¯ã·ã§ã³äŒæã«ã€ããŠéåžžã«æ·±ãæãäžããŸãããã©ã³ã¶ã¯ã·ã§ã³äŒæããªãå¿
èŠãªã®ããçè§£ãã倿§ãªãã©ã³ã¶ã¯ã·ã§ã³äŒæãªãã·ã§ã³ãäŒæãªãã·ã§ã³ã«å¿ããäŸå€åŠçãå®åã§ãã©ã³ã¶ã¯ã·ã§ã³äŒæãªãã·ã§ã³ã䜿çšããéã®æ³šæç¹ãæ±ããŸãã
ç¥èå
±æè
ãã ã»ãšã³ãã³æ°ã®äžèš
ããã¯ãšã³ãéçºè
ã¯ãMVCãšDBã¢ã¯ã»ã¹æè¡ãšãã2ã€ã®å€§ããªè»žãå¿
ã宿ãããªããã°ãªããŸãããçããããã®2ã€ã®è»žã宿ãããå
å®ãªããã¯ãšã³ãéçºè
ãšããŠæé·ã§ãããããæäŒãããŸããããããšãããããŸãã
è¬çŸ©ã®é çª
é¢é£ããŒãããã