
ããã«ã¡ã¯ãHabrausersæ§ïŒ 
ååã®èšäºã§ã¯ãDDDã¢ãããŒãã䜿çšããæŠç¥çã¢ããªã³ã°ã«ã€ããŠæ€èšããŸããã ããã¯äž»é¡é åã®ç¹å®ã®ã¿ã¹ã¯ã解決ã
 äžã§æŠå¿µçãªå¢çãåºå¥ããæ¹æ³ã瀺ããŸããã
ç¹å®ã®
 ãå®è£
ããããã«ãæ¬è³ªçã«æè¡çãªäœã¬ãã«ã®æŠè¡ãã¿ãŒã³ãããã€ã䜿çšãããŸããã€ãŸãããããã®ãã¿ãŒã³ã¯æè¡çãªåé¡ã解決ããããã«äœ¿çšãããŸãã ãã®ãããªãã¿ãŒã³ã¯æ¬¡ã®ãšããã§ãïŒ 
ã 
- ã 
ã 
ã 
ã 
ã 
ããã³
 ã ãã®èšäºã§èª¬æããã®ã¯ããããã«ã€ããŠã§ãã 
é©åãªèšèšã§ã¯ããããã®ãã¿ãŒã³ãéããŠæç€ºçã«
 ã§
 ã衚çŸãããããšãçè§£ããããšãéèŠã§ãã ãœãããŠã§ã¢ã¢ãã«ã¯
è±ãããå®å
šã«ç€ºããªããã°ãªããŸããã æŠå¿µã
 ã䜿çšããŠè¡šçŸãããŠããªãå Žåãã¢ãã«ã§è¡šçŸãã¹ãã§ã¯ãããŸããã èšèšã
 泚æãæããã«æŠè¡çãªãã³ãã¬ãŒãã䜿çšããŠå®è¡ãããå Žåãããã¯è»œéã®DDDã¢ãããŒãã䜿çšãããããšãæå³ããŸãã
äŒçµ±çã«ãEãEvansã®
æ¬ããå§ãŸã£ãŠãDDDãã³ãã¬ãŒãã¯æåã®
ãšèŠãªãã
 ã
ãšã³ãã£ãã£
ãµããžã§ã¯ãé åã®æŠå¿µãäžæã§ãããã·ã¹ãã å
ã®ä»ã®ãã¹ãŠã®ãªããžã§ã¯ããšç°ãªãå Žåã 
䜿çšããŠã¢ãã«åããŸãã ãã®ãããª
-ã¯ãååšãµã€ã¯ã«å
šäœã§åœ¢ç¶ã倧ããç°ãªãå ŽåããããŸãããèŠæ±ã«å¿ããŠåžžã«äžæã«èå¥ããã³æ€åºã§ããŸãã ãã®ããã«ãäžæã®èå¥åã䜿çšãã
 ã 
èšèšæã«ã¯ããŸããã®äœæãèæ
®ããå¿
èŠããããŸãã
èå¥åãäœæããã«ã¯ãããã€ãã®æŠç¥ããããŸãã
äžæã®å€ã®ãŠãŒã¶ãŒå
¥åãã®ã¢ãããŒãã¯ãã¢ããªã±ãŒã·ã§ã³ã®èå¥åãèªã¿åãå¯èœã«ããå¿
èŠãããå Žåã«äœ¿çšããå¿
èŠããããŸãã ããã§ããã¢ããªã±ãŒã·ã§ã³èªäœã§èå¥åã®æ£ç¢ºæ§ãšäžææ§ã確èªããå¿
èŠããããŸãã å€ãã®å Žåãèå¥åã®å€æŽã®ã³ã¹ãã¯é«ãããŠãŒã¶ãŒã¯å€æŽããªãã§ãã ããã ãããã£ãŠããã®èå¥åã®å質ãä¿èšŒããæ¹æ³ã䜿çšããå¿
èŠããããŸãã
èå¥åã¯ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠçæãããŸããäžæã®èå¥åãèªåçã«äœæããããã«ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããé«éã§ä¿¡é Œæ§ã®é«ããžã§ãã¬ãŒã¿ããããŸãã ããšãã°ãJavaç°å¢ã«ã¯ãã¯ã©ã¹
java.util.UUIDããããŸããããã«ããã4ã€ã®ç°ãªãæ¹æ³ïŒæéããŒã¹ãDCEã»ãã¥ãªãã£ãååããŒã¹ãã©ã³ãã ã«çæãããUUIDïŒã§ããããæ±çšäžæèå¥åãçæã§ããŸãã
ãã®ãããªUUIDã®äŸïŒ 
046b6c7f-0b8a-43b9-b35d-6489e6daee91 ããã¯36ãã€ãã®æååã§ãã
ãã®ãããªå€§ããªèå¥åã¯ãã¡ã¢ãªã®éè² è·ã®ããã«ä¿åããã«ã¯äžå©ã§ãã UUIDã®16é²ããã¹ãã®åã
ã®ã»ã°ã¡ã³ãã®äžææ§ã®ä¿¡é Œã¬ãã«ã«å¿ããŠãèå¥åå
šäœã®1ã€ä»¥äžã®ã»ã°ã¡ã³ãã䜿çšã§ããŸãã 
å¢çå
ã®
ã®ããŒã«ã«èå¥åãšããŠäœ¿çšãããå Žåãççž®ãããèå¥åã¯ããé©åã«ä¿è·ãããŸãã
ããšãã°ã 
APM-P-08-14-2016-046B6C7Fèå¥åãèããŠ
APM-P-08-14-2016-046B6C7F ã
ããïŒ 
PMåå¥ã®èšèšç®¡çã³ã³ããã¹ãã 
Pãããžã§ã¯ã; 
08-14-2016äœææ¥; 
046B6C7F-ã¯UUIDã®æåã®ã»ã°ã¡ã³ãã§ãã ãã®ãããªèå¥åãããŸããŸãª
 ã§åºããããšãéçºè
ã¯ããã«ãã®ç±æ¥ã確èªããŸãã
èå¥åã¯æ°žç¶ã¹ãã¬ãŒãžãšã³ãžã³ã«ãã£ãŠçæãããŸããããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããŠãèå¥åãäœæã§ããŸãã ãããã£ãŠãäžæã®å€ã確å®ã«è¿ãããããšã確èªã§ããŸãã ãã ããããã¯ååã«çããè€åèå¥åã«äœ¿çšããããšãã§ããŸãã
ãã®ã¢ãããŒãã®æ¬ ç¹ã¯ããã©ãŒãã³ã¹ã§ãã åå€ã®ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã§èå¥åãçæãããããæéãããããŸãã
ä»ã®å¶éãããã³ã³ããã¹ãã«ãã£ãŠå²ãåœãŠãããèå¥åèå¥åãååŸããã«ã¯ãããŸããŸãª
 ãçµ±åããå¿
èŠãããå¯èœæ§ããããŸãïŒããšãã°ãåã®èšäºã§ç€ºãã
 ã䜿çšïŒã
ããšãã°ãå¥ã®
 ã§ç¹å®ã®èå¥åãèŠã€ããããã«ãããŒã«ã«èå¥åãšããŠäœ¿çšã§ããå€éš
äžæã®èå¥åãæ±ºå®ã§ããããã«ãã屿§ïŒé»åã¡ãŒã«ãã¢ã«ãŠã³ãçªå·ïŒãæå®ã§ããŸãã å€éš
ããããŒã«ã«
远å ã®ç¶æ
ïŒããããã£ïŒãã³ããŒããããšãã§ããŸãã
ãšã³ãã£ãã£ã®å Žåãéåžžãã¡ã€ã³ãã¡ã€ã³èå¥åã«å ããŠã代çèå¥åã䜿çšãããŸãã 1ã€ç®ã¯ãµããžã§ã¯ãé åã®èŠä»¶ã«åŸãã2ã€ç®ã¯ORMããŒã«èªäœïŒHibernateãªã©ïŒã察象ãšããŠããŸãã 代çããŒãäœæããã«ã¯ãéåžžã 
longåãŸãã¯
intåã®
屿§ãäœæãããããŒã¿ããŒã¹ã«äžæã®èå¥åãäœæããããããäž»ããŒãšããŠäœ¿çšãããŸãã æ¬¡ã«ãORMããŒã«ã䜿çšããŠããã®ããŒã®å±æ§ãžã®ãããã³ã°ãæå¹ã«ãªããŸãã ãã®ãããªä»£çèå¥åã¯ããã¡ã€ã³ã¢ãã«ã®äžéšã§ã¯ãªããããéåžžã¯å€éšããé ãããŠããŸãã
ãŸãããªããžã§ã¯ãã®ååšãéããŠäžææ§ãç¶æããããã«ããã®èå¥åã倿Žããä¿è·ããå¿
èŠããããšèšãããšãéèŠã§ãã ããã¯äž»ã«ãèå¥åã€ã³ã¹ããŒã©ãŒã¡ãœãããé衚瀺ã«ããããã€ã³ã¹ããŒã©ãŒã¡ãœããã§ç¶æ
倿Žãã§ãã¯ãäœæããŠããã®ãããªå€æŽãçŠæ¢ããããšã«ãã£ãŠè¡ãããŸãã ããšãã°ã 
åã®èšäºãšåãPFMã·ã¹ãã ãæ€èšã§ããŸãã
ãŸãããµããžã§ã¯ãé åã§
ã匷調衚瀺ããå¿
èŠããããŸãã BankingAccount 
ããããã¢ã«ãŠã³ãçªå·accountNumberã®äœ¿çšããããèå¥ããããã«é Œãããšã¯æããã§ãã ãã ãããã®çªå·ã¯å¥ã®éè¡ã§ã®ã¿äžæã§ãããä»ã®éè¡ã§ãç¹°ãè¿ãããå ŽåããããŸãã ïŒIBANçªå·ã䜿çšã§ããŸããããã®çªå·ã¯äž»ã«æ¬§å·é£åã®éè¡ã§ã®ã¿äœ¿çšãããŸããïŒã€ãŸããå£åº§çªå·ã«å ããŠãUUIDã»ã°ã¡ã³ãã䜿çšã§ããŸãã æ¬¡ã«ãèå¥åã¯
PFM-A-424214343245-046b6c7fã§æ§æãããŸããããã§ã
- PFMã³ã³ããã¹ãå
- Aã¢ã«ãŠã³ã
- 424214343245å£åº§çªå·å£åº§
- 046b6c7f-UUIDã®äžéš
-ãšããŠèå¥åãæå®ã§ã
- ã ãã®éåžžã«éèŠãªDDDãã³ãã¬ãŒãã詳现ã«èŠãå¿
èŠããããŸãã
å€ãªããžã§ã¯ã
ãªããžã§ã¯ãã«ãšã£ãŠåæ§ãéèŠã§ãªãå Žåã屿§ã«ãã£ãŠå®å
šã«æ±ºå®ãããå Žåã¯
-ãšèŠãªãå¿
èŠããã
- ã æŠå¿µã
æã£ãŠãããã©ããã調ã¹ãã«ã¯ã次ã®ç¹æ§ã®ã»ãšãã©ãæã£ãŠãããã©ããã調ã¹ãå¿
èŠããããŸãã
- ãµããžã§ã¯ãé åå
ã®ãªããžã§ã¯ããæž¬å®ãè©äŸ¡ããŸãã¯èª¬æããŸãã
- äžå€ãšèŠãªãããšãã§ããŸãã
- æŠå¿µçã«å
šäœçãªãã®ãã¢ãã«åããé¢é£ãã屿§ãåäžã®å
šäœã«çµã¿åãããŸãã
- æž¬å®æ¹æ³ãŸãã¯èª¬æã倿Žããå Žåãå®å
šã«çœ®ãæããããšãã§ããŸãã
- é¢é£ãããªããžã§ã¯ãã«ã 
ãã®ãããªãªããžã§ã¯ãã¯ãäžèŠãããšæããããããã¯ããã«é »ç¹ã«èŠã€ããã¯ãã§ãã äœæããã¹ããããã³ä¿å®ãç°¡åãªã®ã§ãå¯èœãªå Žåã¯
代ããã«
-ã䜿çšããããã«ããŠãã ããã
ãããŸãã«
-ã倿Žå¯èœã«ãªããŸãã ãã£ãŒã«ããžã®ã¢ã¯ã»ã¹ãå¶éããã«ã¯ãéåžžãã»ãã¿ãŒããã©ã€ããŒãã«èšå®ãããªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒããããªãã¯ã«æž¡ããŸãããããªãã¯ã«ã¯ã 
屿§ã§ãããã¹ãŠã®ãªããžã§ã¯ããæž¡ãããŸãã 
-äœæã¯ã¢ãããã¯æäœã§ããå¿
èŠããããŸãã
-ç䟡æ§ãã§ãã¯æäœãå®çŸ©ããããšãéåžžã«éèŠã§ãã 2ã€ã®
-çããããã«ã¯ããã¹ãŠã®å±æ§ã¿ã€ããšå€ãçãããªããã°ãªããŸããã
-ãã¹ãŠã®ã¡ãœããã¯
 ã¹ãã ãšèšãããšãéåžžã«éèŠã§ãã äžå€ã®ããããã£ã«éåããŠã¯ãªããªãããããªããžã§ã¯ããè¿ãããšã¯ã§ããŸããããªããžã§ã¯ãã®ç¶æ
ã倿Žããããšã¯ã§ããŸããã
éé¡ã®äŸ¡å€ã®ãªããžã§ã¯ãã®å€å
žçãªäŸãèããŠã¿ãŸãããïŒã€ã³ã¿ãŒãããäžã®å€ãã®äŸã§ã¯ããã®ã¯ã©ã¹ãçºçããŸãïŒã
 public class Money implements Serializable { private BigDecimal amount; private String currency; public Money (BigDecimal anAmount, String aCurrency) { this.setAmount(anAmount); this.setCurrency(aCurrency); } ⊠} 
ããã§ã®ã€ã³ã¹ããŒã©ãŒã¡ãœããã¯é衚瀺ã«ãªããŸã;å€ã®ãªããžã§ã¯ãã®äœæã¯ã¢ãããã¯æäœã§ãã ç¹å®ã®å€ã®äŸã¯
{50 000 }ã§ãã åã
ã«ããããã®å±æ§ã¯äœãä»ã®ãã®ãèšè¿°ããããå
·äœçãªãã®ãæå³ãããã®ã§ã¯ãããŸããã ããã¯ãç¹ã«æ°50,000ããã³ããçšåºŠãã«ã«åœãŠã¯ãŸããŸãã ã€ãŸãããããã®å±æ§ã¯ãéé¡ãè¡šãæŠå¿µçã«
 ã圢æããŸãã ãµããžã§ã¯ãé åã®æŠå¿µã®ãã®æŽåæ§ã¯ãéåžžã«å€§ããªåœ¹å²ãæãããŸãã 
ã¿ã€ããš
ããããã®
 ã§
 ã«åŸã£ãŠåç
§ããããšçè§£ããã®ã¯éèŠã§ãã
次ã®éèŠãªæŠè¡ã¢ããªã³ã°ãã³ãã¬ãŒãã«ç§»ããŸãããã
ãã¡ã€ã³ãµãŒãã¹
ã䜿çšãããšããã®èšèªã®åè©ã¯ãªããžã§ã¯ãã«åæ ãããåè©ã¯ãããã®ãªããžã§ã¯ãã®åäœã«åæ ãããŸãã 
ãŸãã¯
-èµ·å ããªãåè©ãŸãã¯ã¢ã¯ã·ã§ã³ãéåžžã«é »ç¹ã«ãã
- ã ãµããžã§ã¯ãé åã«ãã®ãããªæäœãååšããå Žåããµããžã§ã¯ãé åã®
 ãšããŠå®£èšãã
 ïŒã¯ã©ã€ã¢ã³ãã§ãã
 ãšã¯ç°ãªããŸãïŒã 
ã¯3ã€ã®ç¹åŸŽããã
 ã
- ãµãŒãã¹ã«ãã£ãŠå®è¡ãããæäœã¯ãæ¢åã®- æäœã¯ããã¡ã€ã³ã¢ãã«ã®ããŸããŸãªãªããžã§ã¯ãã§å®è¡ãããŸãã
- æäœã«ã¯ç¶æ
ããããŸããã
ã®äœ¿çšãä¹±çšããå¿
èŠã¯ãããŸããã ãã
 äœæãããŸãã ããžãã¹ããžãã¯ã¯ã 
ãš
忣ããå¿
èŠããã
 ã 
ã«åŸã£ãŠãããå®è¡ã§ããªãå Žåã«ã®ã¿
 ã䜿çšããå¿
èŠããã
 ã äž»ãªãã®ã¯ããã®ã€ã³ã¿ãŒãã§ãŒã¹ã
 æ£ç¢ºã«åæ ããããš
 ã
ããšãã°ã1ã€ã®æ¯æäººã¢ã«ãŠã³ãããåå人ã¢ã«ãŠã³ãã«éé
ãå©çšã§ããŸãã ã©ã®ãªããžã§ã¯ãã«å€æã¡ãœãããä¿åãããã¯å®å
šã«äžæã§ããããã 
䜿çšãããŸãã
ã€ãã³ãïŒãã¡ã€ã³ã€ãã³ãïŒ
äž»é¡åéãç ç©¶ãããšããäž»é¡ã®å°éå®¶ã«ãšã£ãŠç¹ã«éèŠãªäºå®ããããŸãã ããšãã°ãå°éå®¶ããæ¬¡ã®éèŠãªãã¬ãŒãºãèãããšãã§ããŸãã
- ããã€...ã
- ããããèµ·ãã£ãã...ã
- ãâŠã®å Žåã¯ãç¥ãããã ããããŸãã¯ãâŠã®å Žåã¯éç¥ããã
- ãâŠã®å Žåã
ã€ãŸããå¥ã®å¥ã®ã¢ã¯ã·ã§ã³ã®çµæãšããŠäœããçºçããå Žå
 ç¹å®ã®
 ãã¢ãã«åããå¿
èŠã
 ãŸãã
ã¢ããªã³ã°ã®éã«ã¯ã 
ãéå»åœ¢ã§èµ·ãã£ãããšãèæ
®ããå¿
èŠããããŸãã ãããã£ãŠã 
ã®ååã¯éå»ã®æéãåæ ããŸãããååèªäœã¯
 ã§
 ã«åŸã£ãŠå²ãåœãŠãããå¿
èŠããã
 ã
ã 
-ããã«äžå€ã«èšèšãããããš
éåžžã«å€ããã
- ããããã®é¢æ°ã¯
 ã§ãã 
ãã€ã³ã¿ãŒãã§ã€ã¹ãç®çã衚ããªããžã§ã¯ããšããŠã¢ãã«åãããããããã£ã¯ãã®åå ãåæ ããŸãã
ããšãã°ãFundsDepositedã€ãã³ããèããŸãã
occuredOnã¯
ã®ã¿ã€ã ã¹ã¿ã³ãã§ãã æ¬¡ã«ãäœãèµ·ãã£ããã«ã€ããŠã®æ
å ±ãäŒããéèŠãªããããã£ãæå®ããå¿
èŠããããŸãã éèŠãªããããã£ã¯ã 
çæããã
ãŸãã¯
èå¥åïŒaccountIdïŒã§ãã å å
¥è
ã«ãšã£ãŠãããç¶æ
ããå¥ã®ç¶æ
ãžã®
ã®ç§»è¡ã®ããã€ãã®ãã©ã¡ãŒã¿ãéèŠã«ãªãå¯èœæ§ããããŸãã
ãã®å Žåãè³éãç¹å®ã®å£åº§ã«å
¥éããããšãã«çºçããã€ãã³ããã·ãã¥ã¬ãŒããããŸãã ãã®çµæãç»é²ã«é¢ããSMSã®éä¿¡ãã¡ãŒã«ã®éä¿¡ããŸãã¯å¥ã®æäœãå®è¡ã§ããŸãã
å
¬éãã 
åŠçã§ããããã«ããã«ã¯ã 
ãã³ãã¬ãŒããŸãã¯
-䜿çšã§ããŸãã
ã€ãã³ãã1ã€ã®
 å
ã§åŠçãããå ŽåãããŸããŸãªã€ã³ãã©ã¹ãã©ã¯ãã£ã³ã³ããŒãã³ãã䜿çšã§ããŸããïŒãã¡ã€ã³ã¢ãã«ã®ãã¬ãŒã ã¯ãŒã¯å
ã«ååšããã¹ãã§ã¯ãããŸããïŒãã 
ãã³ãã¬ãŒãã®å®è£
ã®ã¿ãã¢ãã«ã«è¿œå ã§ããŸãã
ãããã£ãŠããã¹ãŠã®ãµãã¹ã¯ã©ã€ããæ ŒçŽãç»é²ãã 
ãçºè¡ãã
DomainEventPublisherãªããžã§ã¯ããäœæããã ãã§ååã§ãã ãã®å Žåããµãã¹ã¯ã©ã€ããŒã®ãããªã±ãŒã·ã§ã³ã¯ãå¥ã®ãµã€ã¯ã«ãš1ã€ã®ãã©ã³ã¶ã¯ã·ã§ã³ã§åæçã«å®è¡ãããŸãã ãŸããåãµãã¹ã¯ã©ã€ããŒã¯ã 
åå¥ã«è§£æ±ºã§ããŸãã
ã
 ã®ç¯å²ã®æŠå¿µã§ãããå¥ã
ã®
 ãªãããšã匷調ããã®ã¯éèŠã§ãã ãããã£ãŠãã¡ãã»ãŒãžã³ã°ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšããŠã 
å€éš
ãéåæçã«è»¢éã§ããŸãã
ããã«ãŠã§ã¢ã¯ã©ã¹ã«å±ããå€ãã®ã¡ãã»ãŒãžã³ã°ã³ã³ããŒãã³ãïŒRabbitMQãNServiceBusãªã©ïŒããããŸãã ãŸããRESTãªãœãŒã¹ã䜿çšããŠã¡ãã»ãŒãžã³ã°ãå®è¡ããããšãã§ããŸãããã®å ŽåãèªåŸã·ã¹ãã ã¯å
¬éã·ã¹ãã ã«ã¢ã¯ã»ã¹ãããŸã åŠçãããŠããªãã€ãã³ãã®éç¥ãèŠæ±ããŸãã
éç¥ãå
¬éããRESTfulã®ã¢ãããŒãã¯ãäžè¬çãªã¡ãã»ãŒãžã³ã°ã€ã³ãã©ã¹ãã©ã¯ãã£ã䜿çšããå
¬éã®å察ã§ãã ãçºè¡è
ãã¯ãé¢ä¿è
ã«äœãéä¿¡ãããªããããç»é²ãããã賌èªè
ãã®æ°ããµããŒãããŸããã 代ããã«ããã®ã¢ãããŒãã§ã¯ãRESTã¯ã©ã€ã¢ã³ãèªäœãURIã䜿çšããŠéç¥ãèŠæ±ããå¿
èŠããããŸãã
ã¡ãã»ãŒãžã³ã°ã€ã³ãã©ã¹ãã©ã¯ãã£ãå
¬éãããã®ãšãã¡ã€ã³ã¢ãã«ã®çŸåšã®ç¶æ
ãšã®éã§äžè²«æ§ãå®çŸããå¿
èŠãããããšãçè§£ããããšãéèŠã§ãã 
ã®é
ä¿¡ãä¿èšŒããå¿
èŠãããããã®
ãçºè¡ãããã¢ãã«ã®å®éã®ç¶æ³ãåæ ããå¿
èŠããããŸãã
ãã®ãããªäžè²«æ§ãå®çŸããã«ã¯ãããŸããŸãªæ¹æ³ããããŸãã ã»ãšãã©ã®å Žåã 
å
ã§
 䜿çšãããã¡ãœããã䜿çšã
 ã ãã®ã¹ãã¢ããŠã¹ã¯ããã¡ã€ã³ã¢ãã«ã«ãã£ãŠäœ¿çšããããšåæã«ãã¡ãã»ãŒãžããã·ã³ã°ã¡ã«ããºã ã䜿çšããŠæªå
¬éã®
ãå
¬ââéããå€éšã³ã³ããŒãã³ãã«ãã£ãŠäœ¿çšãããŸãã ãã ãããã®ã¢ãããŒãã§ã¯ãã¯ã©ã€ã¢ã³ãã¯åä¿¡ã¡ãã»ãŒãžãéè€æé€ããå¿
èŠããããããåãã€ãã³ããåéä¿¡ãããšãã«ã¯ã©ã€ã¢ã³ãã¯ãããæ£ããåŠçããŸãã
äž¡æ¹ã®å Žå-ãµãã¹ã¯ã©ã€ããŒãã¡ãã»ãŒãžã³ã°ã«ããã«ãŠã§ã¢ã䜿çšããå ŽåããŸãã¯éç¥ã¯ã©ã€ã¢ã³ããRESTã䜿çšããå Žå-åŠçãããã¡ãã»ãŒãžã®IDã®è¿œè·¡ã¯ããã¡ã€ã³ã¢ãã«ã®ããŒã«ã«ç¶æ
ã®å€æŽãšãšãã«èšé²ãããããšãéèŠã§ãã
次ã®DDDãã¿ãŒã³ãèŠãŠã¿ãŸãããã
ã¢ãžã¥ãŒã«
ã¢ãã«å
ã®
ã¯ãäºãã«å¯æ¥ã«é¢é£ãããã¡ã€ã³ãªããžã§ã¯ãã®ç¹å®ã®ã°ã«ãŒãã®ååä»ãã³ã³ãããŒã§ãã 圌ãã®ç®æšã¯ãç°ãªã
ã¯ã©ã¹éã®çµåã匱ããããšã§ãã DDDã¢ãããŒãã®
ã¯éå
¬åŒãŸãã¯äžè¬åãããã»ã¯ã·ã§ã³ã§ãããããé©åãªååãä»ããå¿
èŠããããŸãã 圌ãã®ååãéžã¶ããšã¯
 æ©èœ
 ã
ççµå
èšèš
å¿
èŠã§ããããã«ãããã¢ããªã³ã°ã®æŠå¿µã®ãµããŒããšãªãã¡ã¯ã¿ãªã³ã°ã容æã«ãªããŸãã äžè²«æ§ãå¿
èŠãªå Žåã¯ããã¢ããŒãã¢ã¢ãžã¥ãŒã«éã®é埪ç°äŸåé¢ä¿ã«ã€ããŠæŠãå¿
èŠããããŸãïŒãã¢ããŒãã¢
 ããããžã§ã¯ãå
ã§åãã¬ãã«ã«ããããåãéã¿ãæã€
 ïŒã 
ã¯ãã¢ãã«ã®éçãªæŠå¿µã«ããªãæ¹
ããã§ãããããªããªãã 
ã¯ãæ§æãããªããžã§ã¯ãã«å¿ããŠå€åããã¯ãã ããã§ãã
ã¢ãžã¥ãŒã«ã®åœåã«ã¯ç¹å®ã®ã«ãŒã«ããããŸãã ã¢ãžã¥ãŒã«ã®ååïŒå€ãã®ããã°ã©ãã³ã°èšèªïŒã¯ãçµç¹ã®é局圢åŒãåæ ããŠããŸãã éåžžãååã®éå±€ã¯ãã¢ãžã¥ãŒã«ãéçºããŠããçµç¹ã®ãã¡ã€ã³åã§å§ãŸããŸãïŒç«¶åãé¿ããããïŒã äŸïŒ
 com.bankingsystems 
ã¢ãžã¥ãŒã«åã®æ¬¡ã®ã»ã°ã¡ã³ãã¯ã 
èå¥ã
 ã ãã®ã»ã°ã¡ã³ãã®ååã¯ã 
ååã«åºã¥ããŠããããšãæãŸããã§ãïŒ
 com.bankingsystes.pfm 
以äžã¯ãç¹å®ã®ãµããžã§ã¯ããšãªã¢ã®ã¢ãžã¥ãŒã«ãèå¥ãã修食åã§ãã
 com.bankingsystems.pfm.domain 
ãã¹ãŠã®ã¢ãã«
ã¯ããã®ãã¡ã€ã³ã»ã¯ã·ã§ã³ã«é
眮ã§ããŸãã ãã®ããã«ïŒ
 com.bankingsystems.pfm.domain.account <<Entity>>BankingAccount <<ValueObject>>AccountId 
ããç¥ãããŠãã
 åœåã¯æ¬¡ã®ããã«ãªããŸãã
om.bankingsystems.resourcesom.bankingsystems.resources.view ïŒãã¥ãŒã®ã¹ãã¬ãŒãžïŒ
om.bankingsystems.applicationom.bankingsystems.application.account ïŒ 
ãµãã¢ãžã¥ãŒã«ïŒ
ã¯ããµããžã§ã¯ãé åã®é¢é£ãªããžã§ã¯ããéçŽããããã«äœ¿çšãããæ¥ç¶ãããŠããªããªããžã§ã¯ããççµåãããŠãããªããžã§ã¯ãããåé¢ãããŸãã 
æç¢ºãªå¢çããªãéããéåžžã¯æåã«ãã¹ãŠã®æŠå¿µã1ã€ã®ã¢ãã«ã«çµåããããã 
ã¯è€æ°ã®ã¢ãžã¥ãŒã«ã«ãŸãããããšããããããŸãã
éèš
ã¯ããã¹ãŠã®DDDæŠè¡ããŒã«ã®äžã§æãè€éã§ãã 
ã¯ã 
ãªããžã§ã¯ããŸãã¯
ã¯ã©ã¹ã¿
 ã ã€ãŸãããããã®ãªããžã§ã¯ãã¯ãããŒã¿å€æŽã®èгç¹ããå
šäœãšããŠèæ
®ãããŸãã
ãããã ã§ãããŒãžã«åæããå¿
èŠããããªããžã§ã¯ããæ±ºå®ããããã«ãã¢ãã«ã®çã®äžå€éã-ããã䜿çšããæ¹ãè¯ããšèšãããšãéèŠã§ã ã ãã倿Žããå¿
èŠããããŸã ããªããžã§ã¯ãïŒãŸãã¯ãã€ã³ã¿ãŒïŒãšããŠçŽæ¥ãªã³ã¯ãä¿åããã®ã§ã¯ãªããã°ããŒãã«èå¥åã䜿çšããŠè¡ãã®ãæé©ã§ãããããã£ãŠããªããžã§ã¯ãã®ã¡ã¢ãªãåæžãããŸããèªã¿èŸŒã¿ãéããªããŸããã¹ã±ãŒãªã³ã°ãç°¡åã§ããã¯ã©ã€ã¢ã³ãã®ãªã¯ãšã¹ããè€æ° ãã€ãŸãã1ã€ã倿ŽããåŸustomerIdã ustomer- Inquiry-ä»ã®çµç¹ããã®ä¿¡çšå ±åæžã®ç¹å®ã®èŠæ±ã ã§ã工堎
ãã®ãã¿ãŒã³ ãŠã ãŸãããã¡ã¯ããªãŒ ïŒã³ã³ã¹ãã©ã¯ã¿ãŒã¯ããã衚çŸããŸããïŒãäœæãããšã ã«ãã ãã¹ãŠã®äžå€æ¡ä»¶ãéµå®ããå¿
èŠããã-ïŒã¯ã1åã®éä¿¡æäœã§è»¢éããå¿
èŠããããŸãã建èšã®è©³çްã¯é衚瀺ã§ãã-ãããŠãªããžããª
ã¹ãã¬ãŒãžã¯ãããã«çœ®ãããã¢ã€ãã ãå®å
šã«ä¿ç®¡ããããã«èšèšãããã¡ã¢ãªé åã§ããããããµããžã§ã¯ãæåã®ã¹ãã¬ãŒãžã§ãã- ã³ã¬ã¯ã·ã§ã³ãæš¡å£ããããšãå¿åã
- æ°žç¶çãªã¹ãã¬ãŒãžã®ã¡ã«ããºã ãæåã
HashMap<ObjectId,Object>ãŸãããã®ã³ã¬ã¯ã·ã§ã³ã¯ãåãã¢ã€ãã ã®åæ¿å
¥ãé€å€ããŸããåæã«ããªããžã§ã¯ããåä¿¡ããŠââ倿Žãããšã倿Žãããã«èšé²ãããŸããã¯ã©ã€ã¢ã³ãã¯æ°žç¶çãªã¹ãã¬ãŒãžã¡ã«ããºã ã®åäœã«å¹²æžããå¿
èŠã¯ãããŸãããããã®é©åãªåäœã®ããã«ããªããžã§ã¯ãã®å€æŽãæé»çã«è¿œè·¡ããå¿
èŠããããŸãããããè¡ãã«ã¯2ã€ã®æ¹æ³ããããŸãã- æé»ã®ã³ããŒãªã³ãªãŒãïŒæ°žç¶ã¹ãã¬ãŒãžã¡ã«ããºã ã¯ãããŒã¿ããŒã¹ããèªã¿åããããã³ã«ã¹ãã¬ãŒãžãªããžã§ã¯ããã³ããŒãããã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããããšãã«éããããã³ããŒãã¯ã©ã€ã¢ã³ããšæ¯èŒããŸãïŒã
- èšé²äžã®æé»çãªã³ããŒïŒã¡ã«ããºã ã¯ããããã·ãªããžã§ã¯ãã䜿çšããŠããŠã³ããŒãããããªããžã§ã¯ãã管çããŸãïŒã
Hibernateãªã©ã®ã¡ã«ããºã ã䜿çšãããšãsave()ãªã©ã«ãã倿ŽåŸã®å€æŽãæ¯åèšé²ããå¿
èŠããããŸããäŸïŒ
å®è£
ã§save()ãŸãã¯ã¡ãœãããå®è£
ããå¿
èŠã¯ãããŸããput()ãåéæ¹æ³ã®ã¿ããããã£ãŠãããŒã¿ããŒã¹ãŸãã¯ä»ã®ã¡ã«ããºã ãžã®ã¢ã¯ã»ã¹ã¯ã«ã«ãã»ã«åãããããã«
ãããã£ãŠãåºæ¬çãªDDDæè¡ãã¿ãŒã³ãæ€èšãããŸããããããã®åæè¡ããŒã«ã䜿çšããŠãåå¥ã®ããŒã«ãéçºã§ããŸã ãæå§ãã«ãæãéèŠãª-ãæ¬¡ã«ãããããçµã¿åãããŠã ãã·ã¹ãã å
šäœã§ããŒã¿ã®äžè²«æ§ã確ä¿ããã«ã¯ãã䜿çšããŸã ããŸã