[Áöµð³ÝÄÚ¸®¾Æ]¨ç ¼¼¼Çºó¿¡¼ÀÇ DB Á¢±ÙÀü·« ¹× ¿£ÅÍÆ¼ºó »ç¿ë½Ã ÁÖÀÇ»çÇ×
¨è ¼¼¼Çºó¿¡¼ÀÇ Æ®·£Àè¼Ç °ü¸®
¨é ºñÁî´Ï½º ÇÁ·Î¼¼½º ±¸Çö ÃÖÀûÈÇϱâ
¨ê ´É·ü ³ô¿©ÁÖ´Â À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏÀÚ
Áö³ °Á¿¡¼´Â ¼¼¼Çºó ³»¿¡¼ DB¸¦ Çڵ鸵ÇÏ´Â µ¥¿¡´Â JDBC µå¶óÀ̹ö¸¦ ÀÌ¿ëÇÑ Connection °´Ã¼¸¦ »ç¿ëÇÏ´Â ¹æ¹ý°ú, ¿£ÅÍÆ¼ºóÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù°í ¾ð±ÞÇß´Ù. Áß¿äÇÑ Á¡Àº µÎ°¡Áö ¹æ¹ýÀ» È¥¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¿£ÅÍÆ¼ºó »ç¿ë½Ã ¹ß»ýÇÏ°Ô µÇ´Â ¹®Á¦Á¡À» ¹Ì¸® ¾Ë°í ¿£ÅÍÆ¼ºó »ç¿ëÀ» Áö¾çÇÏÀÚ´Â °ÍÀÌ´Ù.
Áö³¹ø °Á¿¡ ÀÌ¾î ¿£ÅÍÆ¼ºó »ç¿ëÀ» Áö¾çÇÒ ¼ö ¹Û¿¡ ¾ø´Â »ç·Ê ÇÑ °¡Áö¸¦ ´õ ¿¹·Î µé°Ú´Ù.
Åë»ó SI ÇÁ·ÎÁ§Æ®¿¡¼ Àλç½Ã½ºÅÛ°ú °°ÀÌ °³ÀÎÀÇ Á¤º¸º¸¾ÈÀÌ ¾ö°ÝÈ÷ ´Ù·ç¾îÁ®¾ß ÇÏ´Â ¼º°ÝÀÇ ½Ã½ºÅÛÀÎ °æ¿ì, ¾÷¹« Àü¹Ý ¸ðµÎ¸¦ À¥±â¹ÝÀ¸·Î ±¸ÇöÇÏÁö´Â ¾Ê´Â´Ù. ¹°·Ð À¥À¸·Î ±¸ÇöÇÏ´Â °Í°ú º¸¾È°ú´Â º°°³ÀÇ ¹®Á¦ÀÌÁö¸¸, ¾ÆÁ÷µµ °ø±â¾÷ µî¿¡¼´Â À¥±â¹Ý ±¸ÇöÀ» ²¨¸®´Â °æ¿ì°¡ ¸¹±â ¶§¹®ÀÌ´Ù.
±Þ¿©°è»ê ¹× ¾÷¹«Æò°¡Á¡¼ö°è»ê µî ¹Î°¨ÇÑ ¼º°ÝÀÇ Á¤º¸¸¦ ´Ù·ç´Â ÇÁ·Î±×·¥Àº
Ŭ¶óÀ̾ðÆ®/¼¹ö(C/S) ȯ°æÀ¸·Î ±¸ÃàµÅ ¾÷¹« ´ã´çÀÚ¸¸ »ç¿ë ÇÒ ¼ö ÀÖµµ·Ï Çϰí, À¥À¸·Î´Â ÀÏ¹Ý»ç¿øµéÀÌ ÀÚ½ÅÀÇ Á¤º¸¸¦ È®ÀÎÇÏ´Â Á¶È¸¼º ÇÁ·Î±×·¥¸¸À¸·Î ±¸¼ºµÇµµ·Ï ¿äûÇÏ´Â »ç·Ê°¡ ¸¹´Ù.
Á¶È¸¼º ±â´É¸¸ °®°í ÀÖ´Â À¥±â¹Ý ÇÁ·Î±×·¥À» ¼³°èÇÑ´Ù¸é, ¼³°èÀÚ´Â DBÀÇ ·¹Äڵ带 SELECTÇϰí ȸ鿡 º¸¿©ÁÖ´Â ±â´É¸¸À» ¼öÇàÇϹǷΠÄõ¸®º¸´Ù´Â ¿£ÅÍÆ¼ºóÀ» Ȱ¿ëÇϰڴٴ ±âÁØÀ» ¼¼¿ì°í, ½ÇÁ¦ °³¹ßµµ ¿£ÅÍÆ¼ºóÀ» ÀÌ¿ëÇØ ÁøÇàÇÏ°Ô µÈ´Ù.
C/S ȯ°æ ½Ã½ºÅÛ°ú À¥ÇÁ·Î±×·¥Àº ¼·Î ¾÷¹« ¹üÀ§ ¹× ±¸ÃàµÈ ȯ°æ¸¸ ´Ù¸¦ »ÓÀÌÁö ¹°¸®ÀûÀ¸·Î °°Àº DB¸¦ »ç¿ëÇϰí ÀÖ´Ù. ÀÌ·¯ÇÑ È¯°æ¿¡¼ °£È¤ ¹ß»ýÇÏ´Â(ÁÖ·Î µ¿½Ã»ç¿ëÀÚ¼ö°¡ Áõ°¡ÇÒ ¶§ ¹ß»ýÇÑ´Ù) EJB ÄÁÅ×À̳ÊÀÇ ¡®NoSuchObjectException¡¯ Àå¾Ö¹°À» ¾Ë¾ÆµÖ¾ß ÇÑ´Ù.
C/S ÇÁ·Î±×·¥À¸·Î ¾÷¹«¸¦ ÇÏ´Â ´ã´çÀÚ¿Í ÀÏ¹Ý »ç¿ëÀÚ°¡ °°Àº ·¹Äڵ带 Á¶È¸ÇÑ »óÅ¿¡¼, ´ã´çÀÚ°¡ ÇØ´ç ·¹Äڵ带 ¼öÁ¤ ȤÀº »èÁ¦Çß°í, À¥ÀÇ Å¬¶óÀÌ¾ðÆ® ¸ðµâÀÌ ÇØ´ç ·¹Äڵ带 Ç¥ÇöÇÏ´Â ¿£ÅÍÆ¼ºóÀ» °è¼Ó ÂüÁ¶Çϰí ÀÖ´Â »óȲÀ̶ó¸é NoSuchObjectExceptionÀ» º¸°Ô µÉ °ÍÀÌ´Ù.
ÀÌ ExceptionÀ» ´øÁö´Â ÀÏÀº EJB ÄÁÅ×À̳ÊÀÇ ±â´É Áß Çϳª·Î ¿£ÅÍÆ¼ºóÀÇ °´Ã¼Á¤º¸¿Í ½ÇÁ¦ DBÀÇ Á¤º¸°¡ ÀÏÄ¡ÇÏÁö ¾ÊÀ» °æ¿ì µ¿ÀÛÇÏ°Ô µÈ´Ù. EJB ÄÁÅ×À̳ʴ ½ÇÁ¦ DB¿Í ¿£ÅÍÆ¼ºó °´Ã¼¸¦ µ¿±âÈÇϰí Àֱ⠶§¹®¿¡ ´Ù¸¥ ¼¼¼ÇÀÌ ÀÚ½ÅÀÌ ÂüÁ¶Çϰí ÀÖ´Â DBÀÇ ·¹Äڵ带 º¯°æÇßÀ» °æ¿ì ExceptionÀ» ´øÁö´Â °ÍÀÌ´Ù.
ÀÌ ExceptionÀÌ ¹ß»ýÇϸé À̸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀº ÄÁÅ×À̳ʰ¡ ÂüÁ¶Çϰí ÀÖ´Â ¿£ÅÍÆ¼ºóÀ» ÇÖµðÇ÷ÎÀÌ ½ÃÄѼ °´Ã¼¸¦ ´Ù½Ã ÂüÁ¶ÄÉ Çϰųª, ÇÖµðÇ÷ÎÀÌ ¹æ¹ýÀ» ¾µ ¼ö ¾ø´Ù¸é EJB ¼¹ö¸¦ RESTARTÇÏ´Â ¼ö ¹Û¿¡ ¾ø´Ù.
ÄÁÅ×À̳ʰ¡ NosuchObjectExceptionÀ» ´øÁú °æ¿ì ÀÚµ¿À¸·Î ¿£ÅÍÆ¼ºóÀ» Passivate½Ã۰í Activate½ÃŰ¸é Æí¸®ÇϰÚÁö¸¸ ¾Æ½±°Ôµµ ±×·± ±â´ÉÀº ¾ø´Ù. °³¹ßÀÚ°¡ ÇâÈÄ¿¡ NosuchObjectExceptionÀÌ »ý±âÁö ¾Êµµ·Ï ÇÁ·Î±×·¥¸¶´Ù ºóÀÇ ¶óÀÌÇÁ½ÎÀÌŬÀ» Á¦¾îÇÏ´Â ºÎºÐÀ» Ãß°¡ÇÏ´Â ¹æ¾Èµµ »ý°¢ÇØ º¼ ¼ö ÀÖ°ÚÁö¸¸ ±× ÀÛ¾÷Àº ½Ã°£ ¼Ò¸ð°¡ Å©´Ù.
ÇØ´ç ¿£ÅÍÆ¼ºóÀÇ ½ÇÇà Áß Á¤º¸¸¦ °®°í ÀÖ´Â XML µ¥ÀÌÅÍÀÇ °ª Áß¿¡¼ ÀÌ·¯ÇÑ ¿¡·¯¸¦ ÀÏÀ¸Å°Áö ¾Êµµ·Ï ÇØÁÖ´Â ¼Ó¼ºÀÌ ¹«¾ùÀÎÁö ¾È´Ù¸é, XML µ¥ÀÌÅÍÀÇ °ªÀ» °íÄ¡°í ´Ù½Ã µðÇ÷ÎÀÌ ÇÏ´Â ¹æ¹ýµµ ÀÖ°Ú´Ù.
ÇÏÁö¸¸ °³¹ßÀÚ ÀÔÀå¿¡¼´Â º»ÀÎÀÇ ÆÇ´Ü Âø¿À¿Í´Â ÀüÇô °ü·ÃÀÌ ¾ø´Â ¿¡·¯¸¦ ¸Â´Ú¶ß¸®°Ô µÈ °ÍÀ̸ç, ÀÌ¹Ì ¿¡·¯¸¦ ¹ß°ßÇÑ ÀÌÈÄ¿¡ ÀÛ¾÷À» ÇÏ´Â °ÍÀ̹ǷΠÀÌ¹Ì »ç¿ëÀÚÀÇ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ½Å·Úµµ°¡ ¶³¾îÁ®ÀÖ´Â »óȲÀ̰ڴÙ. ¶ÇÇÑ ½Ã½ºÅÛ ³»ÀÇ ¸ðµç ¿£ÅÍÆ¼ºóÀ» ã¾Æ³» ÀÛ¾÷À» Çϱ⵵ ²Ï ¹ø°Å·Î¿î ÀÏÀÏ °ÍÀÌ´Ù.
ÄÁÅ×À̳ÊÀÇ µ¿±âÈ ±â´ÉÀÌ À¯¹ß½ÃŰ´Â NoSuchObjectException°ú ¿£ÅÍÆ¼ºó°ú ¸ÅÇεǴ Å×À̺íÀÌ Ä÷³ÀÌ Ãß°¡µÇ´Â µîÀÇ º¯°æ »çÇ×ÀÌ ÀÖÀ» ½Ã ¿£ÅÍÆ¼ºóÀÇ ¼Ò½º¸¦ °íÃÄ ´Ù½Ã µðÇ÷ÎÀÌ ÇØ¾ß ÇÑ´Ù´Â ¹®Á¦Á¡À¸·Î ÀÎÇØ, Ç×»ó ½Ã°£¿¡ Âѱâ´Â ÇÁ·ÎÁ§Æ® °³¹ßÀÚ ÀÔÀå¿¡¼´Â ¿£ÅÍÆ¼ºóÀÇ ½ºÆå¶§¹®¿¡ ÀÚ½ÅÀÇ º¸ÆøÀÌ Á¼¾ÆÁö´Â ´À³¦À» ¹ÞÀ» °ÍÀÌ´Ù
.
±×¸®ÇÏ¿©, ±âÁ¸ ½Ã½ºÅÛÀº ¿£ÅÍÆ¼ºóÀ» ÀÌ¿ëÇ쵂 Ãß°¡ ÇÁ·ÎÁ§Æ®¿¡¼´Â ¿£ÅÍÆ¼ºóÀ» ÀüÇô »ç¿ëÇÏÁö ¾Ê°í, DBÇڵ鸵Àº 100% SQL¹®À¸·Î ó¸®Çϰí ÀÖ´Â ½ÎÀÌÆ®µµ »ý±â°Ô µÈ´Ù.
¿£ÅÍÆ¼ºóÀ» ¾²Áö ¾ÊÀ¸¸é DBÀÇ Å×ÀÌºí¸¶´Ù SELECT, DELETE, INSERT, UPDATE µîÀÇ Äõ¸®¸¦ ÀÏÀÏÀÌ °³¹ßÀÚ°¡ »ý»êÇØ¾ß ÇÏÁö ¾Ê´À³Ä´Â Àǰߵµ ³ª¿Ã ¼ö ÀÖÀ¸³ª ÇÁ·ÎÁ§Æ® ÇÁ·ÎÅäŸÀÌÇÎ ´Ü°è½ÃÁ¡ µî¿¡ Å×À̺í´ç Äõ¸®¹®À» ÀÚµ¿À¸·Î »ý¼º½ÃÄÑÁÖ´Â °£´ÜÇÑ À¯Æ¿ ÇÁ·Î±×·¥À» Á÷Á¢ ¸¸µé¾î »ç¿ëÇÑ´Ù¸é »ý»ê¼ºÀÌ ºñ¾àÀûÀ¸·Î ³ô¾ÆÁú ¼ö ÀÖ´Ù.(4ȸ °ÀÇ¿¡¼ ÀÌ À¯Æ¿À» ¼Ò°³ÇÒ ¿¹Á¤ÀÌ´Ù.)
¿£ÅÍÆ¼ºó »ç¿ë½Ã ¹ß»ýÇÏ°Ô µÇ´Â ¹®Á¦Á¡¿¡ ´ëÇÑ À̾߱â´Â ¿©±â¼ ¸¶¹«¸®Çϰí, ÃÊÁ¡À» ¼¼¼ÇºóÀ¸·Î µ¹¸®ÀÚ. ¼¼¼Çºó ³»¿¡¼ ºñÁî´Ï½º 󸮸¦ ÇÒ ¶§ À¯ÀÇÇØ¾ß ÇÒ Á¡ÀÌ ¹«¾ùÀÎÁö ¾Ë¾Æº»´Ù.
ºñÁî´Ï½º ÇÁ·Î¼¼½º¿Í Æ®·£Àè¼Ç
ÇϳªÀÇ ºñÁî´Ï½º ÇÁ·Î¼¼½º°¡ ó¸®µÉ ¶§ °¡Àå Áß¿äÇÏ°Ô ÁöÄÑÁ®¾ß ÇÒ »çÇ×Àº
Æ®·£Àè¼ÇÀÌ °áÇÔ¾øÀÌ Ã³¸®µÇ¾î¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. ¿¹¸¦ µé¾î º¸Çè±Ý ¼ö³³½Ã¿¡ º¸Çè´ã´çÀÚÀÇ ½ÇÀûÀÌ Ã¼Å©µÊ°ú µ¿½Ã¿¡, ȸ°èÀåºÎ¿¡ º¸Çè±ÝÀÌ ±â·ÏµÇ¾î¾ß ÇÏ´Â [º¸Çè±Ý¼ö³³]À̶õ À̸§ÀÇ ¾÷¹«Á¤Àǰ¡ ÀÖÀ» °æ¿ì, ÀÌ ¾÷¹«°¡ ¼º°øÀûÀ¸·Î ¿Ï·áµÇ¾ú´Ù°í ÆÇ´ÜÇÒ ¼ö ÀÖ´Â °ÍÀº ´Ü 2°¡Áö ¿Ü¿¡´Â ¾ø´Ù.
½ÇÀûµµ üũµÇÁö ¾Ê°í ÀåºÎ¿¡µµ ±â·ÏµÇÁö ¾ÊÀº °æ¿ì¿Í, ½ÇÀû üũ¿Í ÀåºÎ ±â·Ï µÑ ´Ù ¼º°øÇÑ °æ¿ì´Ù. ÀÌ ¿Ü µÑ Áß Çϳª¸¸ ¼º°øÇÑ °æ¿ì´Â Æ®·£Àè¼ÇÀÌ ½ÇÆÐÇÑ °ÍÀÌ´Ù. ½Ã½ºÅÛ ¿î¿µ»ó °áÄÚ ¹ß»ýÇØ¼´Â ¾ÈµÇ´Â Ä¡¸íÀûÀÎ °áÇÔÀÌ´Ù.
¼¼¼ÇºóÀÌ ¼öÇàÇÏ´Â ¸Þ¼Òµå¾È¿¡¼ ¹Ýµå½Ã Æ®·£Àè¼ÇÀÌ ¼º°øÇØ¾ß ÇÔÀº ¾Æ¹«¸® °Á¶Çصµ Áö³ªÄ¡Ä¡ ¾ÊÀ» °ÍÀÌ´Ù.
EJB ÄÁÅ×ÀÌ³Ê¿Í Æ®·£Àè¼Ç
EJB °³¹ßÀÚµéÀº ¼¼¼ÇºóÀÇ ¸Þ¼Òµå ´ÜÀ§·Î Æ®·£Àè¼Ç ·¹º§À» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. ¶ÇÇÑ ÄÁÅ×À̳ʰ¡ °³¹ßÀÚ°¡ ¼³Á¤ÇÑ Æ®·£Àè¼ÇÀÇ ·¹º§¿¡ µû¶ó ¸Þ¼Òµå ³»ÀÇ Æ®·£Àè¼ÇÀ» Çϳª·Î ¹¾îÁشٴ °Íµµ ¾Ë°í ÀÖ´Ù.
EJBÀÇ ½ÇÇàÁß ¼Ó¼ºÁ¤º¸¸¦ °®°í ÀÖ´Â XML ÆÄÀϾÈÀ» Á¶ÀÛÇÔÀ¸·Î½á Æ®·£Àè¼Ç °ü¸®°¡ ÇÊ¿äÇÑ ¸Þ¼Òµå¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ°í(±âº»°ªÀº ALLÀÌ´Ù), ·¹º§ ¶ÇÇÑ Á¶ÀÛÇÒ ¼ö ÀÖ´Ù.
¼³Á¤ ·¹º§Àº REQUIRED·Î ÁöÁ¤ÇÑ´Ù(Æ®·£Àè¼ÇÀ» °ü¸®ÇÒ Çʿ䰡 ¾ø´Â ¾÷¹«Á¤Àǰ¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ¾ø´Ù°í ºÁµµ ÁÁ´Ù).
ÄÁÅ×À̳ʴ ÀÌ µÎ °¡Áö Á¤º¸¸¦ °¡Áö°í ¸Þ¼Òµå ½ÃÀÛ½ÃÁ¡ºÎÅÍ ¿Ï·á½ÃÁ¡±îÁö ExceptionÀÌ ¹ß»ýÇÏ°Ô µÇ¸é ·¹º§ÀÌ REQUIREDÀÏ °æ¿ì Exception¹ß»ý Àü±îÁö ¼öÇàÇß´ø ÀÛ¾÷À» ¸ðµÎ ·Ñ¹é½ÃŲ´Ù.
¼³Á¤·¹º§À» ÇÏÀ§·Î Á¶Á¤Çϸé ExceptionÀ» ´øÁöµÇ ·Ñ¹é½ÃŰÁö´Â ¾Ê´Â Çö»óÀÌ ¹ú¾îÁø´Ù. ±×·¯¹Ç·Î ÀÌ XMLÀÇ ±âº»°ªÀ» °íÄ¡´Â °æ¿ì´Â ¾ø°í, °íÃļµµ ¾ÈµÈ´Ù. VisualCafe¿Í °°ÀÌ ÀÚµ¿À¸·Î EJBÀÇ XMLÀ» »ý¼º½ÃÄÑÁÖ´Â Åø¿¡¼ºÎÅÍ ¸ðµÎ ÀÌ ¿É¼ÇÀ» ±âº»ÀûÀ¸·Î REQUIRED·Î ¼³Á¤Çϰí ÀÖ´Ù.
ÀÌ·¸°Ô Æ®·£Àè¼ÇÀ» ÄÁÅ×À̳ʰ¡ ¸Þ¼Òµå ´ÜÀ§·Î °ü¸®ÇϹǷΠ°³¹ßÀÚ ÀÔÀå¿¡¼´Â ¸í½ÃÀûÀ¸·Î Æ®·£Àè¼ÇÀ» ON/OFF ÇÏ´Â ±â´ÉÀ» ±¸ÇöÇÒ ÇÊ¿ä ¾øÀÌ ÀÏÁ¤ºÎºÐ ŽºÅ©°¡ ÁÙ¾îµç »óÅ·Πº¼ ¼ö ÀÖ´Ù.
ÇÏÁö¸¸ ¸Þ¼Òµå ³»¿¡¼ ConnectionÀ» ¾¸¿¡ ÀÖ¾î ¾ðÁ¦ ConnectionÀ» ¾ò¾î¿À°í ¹ÝÈ¯ÇØ¾ß ÇÒ Áö, ¶Ç´Â Connection °´Ã¼¸¦ ¸î °³ ¼±¾ðÇØ »ý¼º½ÃÄÑ ¾µ °ÍÀÎÁö¿Í °°Àº °í¹ÎµéÀº ÄÁÅ×À̳ÊÀÇ ±â´É°ú º°°³·Î Àüü ÇÁ·ÎÁ§Æ®¿¡ Àϰü¼º ÀÖ°Ô Àû¿ëµÇ¾î¾ß ÇÒ Ç¥ÁØÀ¸·Î Á¤ÇØÁ®¾ß Çϸç, ÀÌ´Â ¼³°èÀÚ¿Í °³¹ßÀÚÀÇ ¸òÀÌ´Ù.
Connection °´Ã¼ Çڵ鸵À» ÇÏ´Â ±âÁØ
Conection °´Ã¼¸¦ ¾î´À Ŭ·¡½º°¡ »ý¼ºÇÏ¸ç ¹ÝȯÇÒ °ÍÀΰ¡, DB ·¡ÆÛ Ŭ·¡½ºÀÇ ¸Þ¼Òµå¿Í Åë½ÅÇҽà Connection °´Ã¼¸¦ ³Ñ±æ °ÍÀΰ¡ ¸» °ÍÀΰ¡, ³Ñ±ä´Ù¸é ¾î¶² ¹æ¹ýÀ¸·Î ³Ñ±â´Â°¡¿¡ ´ëÇÑ ±âÁØÀ» ¼¼¿ö¾ß ÇÑ´Ù.
¼¼¼Çºó ConnectionÀ» ¼±¾ðÇÏ°í »ý¼º½ÃÄÑ ¾ò¾î¿À´Â ÁÖü´Â 1ȸ °ÀÇ¿¡µµ ¸»ÇßµíÀÌ ¼¼¼Çºó Ŭ·¡½ºÀÌ´Ù. ¼¼¼Çºó Ŭ·¡½º ¾È¿¡¼ Connection °´Ã¼´Â Àü¿ªº¯¼ö·Î ¼±¾ðÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.
°¢°¢ÀÇ ¸Þ¼Òµå¸¶´Ù Áö¿ªº¯¼ö·Î ¼±¾ðÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ È¿°úÀûÀÌ´Ù. ¶ÇÇÑ ¸Þ¼Òµå¾ÈÀÇ ÇÁ·Î¼¼½º°¡ ÁøÇà ¿Ï·áµÆÀ» °æ¿ì, finally Àý¿¡¼ ¹Ýµå½Ã ConnectionÀ» ¹ÝÈ¯ÇØ¾ß ÇÏ´Â °Íµµ Áß¿äÇÑ ¿øÄ¢ Áß Çϳª´Ù. Ä¿³Ø¼ÇÀ» ¾ò¾î¿Ã ¶§, SQLExceptionÀ» ´øÁ®¾ß ÇϹǷΠtry, catch¹®À» »ç¿ëÇÏ°Ô µÇ´Âµ¥, finally Àý¿¡¼ ¹Ýµå½Ã Ä¿³Ø¼ÇÀ» ¹ÝȯÇϵµ·Ï ÇÏÀÚ.
»ý¼ºµÈ Connection °´Ã¼´Â DB¿ÍÀÇ ÀÛ¾÷À» ¸ðµÎ ÇÑ ÀÌÈÄ ¹Ýµå½Ã close ¸Þ¼Òµå¸¦ ÅëÇØ ´ÝÇôÁ®¾ß Çϴµ¥, Connection °´Ã¼°¡ ¹ÝȯµÇÁö ¾Ê´Â °æ¿ì ½É°¢ÇÑ ½Ã½ºÅÛ ÀÚ¿ø³¶ºñ¸¦ À¯¹ßÇÏ°Ô µÈ´Ù. ÀÌ´Â °ð ÇÁ·Î±×·¥ÀÇ ¿î¿ë¼º´É ÀúÇÏ·Î À̾îÁø´Ù.
Connection °´Ã¼»ý¼ºÀº ¾ðÁ¦³ª close() ¸Þ¼Òµå¿Í ½ÖÀ» ÀÌ·ç¾î¾ß ÇÑ´Ù´Â ½ÄÀÇ »ç°í½À°üÀ» °¡Á®¾ß ÇϰڴÙ.
´ÙÀ½À¸·Î ¾ð±ÞÇÒ °ÍÀÌ DB ·¡ÆÛ Ŭ·¡½º¿ÍÀÇ Åë½Å ÆÐÅÏÀÌ´Ù. DB ·¡ÆÛ Ŭ·¡½º´Â DB¿¡ SELECT, INSERT, DELETE, UPDATE Äõ¸®¸¦ Àü´ÞÇÏ´Â ¿ªÇÒÀ» ÇÏ´Â ¸Þ¼Òµå ÁýÇÕü·Î½á, DB¿Í °¡Àå °¡±î¿î ÃþÀÌ´Ù.
¼¼¼Çºó ¸Þ¼Òµå´Â º¹ÀâÇÑ ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ ±¸ÇöÇÏ°Ô µÇ´Âµ¥, ¸Þ¼Òµå ½ÃÀÛ ºÎÅÍ ³¡±îÁö Connection °´Ã¼¸¦ ÅëÇÑ Äõ¸®½ÇÇàÀÌ ¸ðµÎ ±× ¾È¿¡ ³ª¿µÅ ÀÖ´Ù¸é À¯Áöº¸¼ö ÇÏ´Â »ç¶÷ »Ó ¾Æ´Ï¶ó °³¹ßÇÏ´Â ´ç»çÀÚÁ¶Â÷µµ °¡µ¶Çϱâ Èûµé´Ù.
µû¶ó¼ DB ·¡ÆÛ Ŭ·¡½º¸¦ ¸¸µé¾î¼ Äõ¸®½ÇÇà¿¡ ÇÊ¿äÇÑ ÀÎÀÚ(»ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Á¶È¸Á¶°Ç ¶Ç´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Á¤º¸)¸¦ ¼¼¼ÇºóÀÌ Àü´ÞÇϰí, ½ÇÇà °á°ú¸¦ ¼·Î ÁÖ°í ¹Þ´Â ÆÐÅÏÀ» »ç¿ëÇÑ´Ù.
ÀÌó·³ DB·¡ÆÛ Ŭ·¡½º¸¦ ÅëÇØ ·¹Äڵ带 Á¶ÀÛÇÏ°Ô µÉ ¶§, ¼¼¼ÇºóÀÌ »ý¼ºÇÑ Connection °´Ã¼¸¦ DB ·¡ÆÛ Ŭ·¡½ºÀÇ ¸Þ¼Òµå¿¡ ÄÝÇÒ ¶§ ÀÎÀÚ·Î ÇÔ²² ³Ñ°Ü¾ßÇÑ´Ù.
¼¼¼ÇºóÀÌ ConnectionÀ» ³Ñ±âÁö ¾Ê°í DB·¡ÆÛ Ŭ·¡½º¿¡°Ô ConenctionÀ» Çڵ鸵ÇÏ´Â °ÍÀ» ¸Ã±æ °æ¿ì, 5°³ÀÇ DB·¡ÆÛ Ŭ·¡½º ¸Þ¼Òµå¸¦ È£ÃâÇϸé Connection »ý¼ºÀ» 5¹ø Çϰí, close() ¸í·ÉÀ» ÅëÇÑ ¹Ýȯµµ 5¹ø ÀϾ°Ô µÇ´Â ¼ÀÀÌ´Ù. ´ÙºÐÈ÷ ºñÈ¿À²ÀûÀÌ´Ù.
ÀÌ¿¡ ºñÇØ DB·¡ÆÛ°¡ ÀÚ½ÅÀ» È£ÃâÇÑ Å¬·¡½º·ÎºÎÅÍ Ç×»ó ConnectionÀ» ¹Þ¾Æ¼ ¾´´Ù¸é ÇÊ¿ä¾ø´Â ÀÚ¿ø³¶ºñ¸¦ ¸·À» ¼ö ÀÖ´Ù.
ÀÌ¿Í °°Àº ¿øÄ¢Àº Àüü ½Ã½ºÅÛ ±¸Á¶¿¡¼ ÅëÀϼº ÀÖ°Ô Àû¿ëµÅ¾ß ÇÒ °ÍÀÌ´Ù. ÅëÀϼº ÀÖ°Ô Àû¿ëµÇÁö ¾ÊÀ¸¸é ÀÌ·± ¿øÄ¢À» ¼¼¿ì´Â Àǹ̰¡ ¾ø´Ù. ¾î¶² ¼ºê ÆÐŰÁö´Â DB·¡ÆÛ Ŭ·¡½º¸¦ »ý¼ºÇÒ ¶§ »ý¼ºÀÚ¿¡¼ ConnectionÀ» ¹Þ´Â´Ù´ø°¡,
¶Ç´Â ¾Æ¿¹ DB·¡ÆÛ Ŭ·¡½º·Î ÇÏ¿©±Ý ConnectionÀ» °üÀåÇϵµ·Ï ÇÑ´Ù´ø°¡ Çϸé Àüü ¼³°è±¸Á¶¿¡ ÅëÀϼºÀÌ ¾ø°í À̸¦ ¹ÙÅÁÀ¸·Î ÇÑ Ãß°¡ °³¹ß¿¡ À־µ ºñÈ¿À²ÀÌ µû¸£°Ô µÈ´Ù. Àϰü¼º ¾ø´Â ±¸Á¶ÀÇ Å¬·¡½ºµéÀ» ÀçȰ¿ëÇÏ´Â ½Å±Ô ¸ðµâµµ ¿ª½Ã È帧¿¡ Àϰü¼ºÀÌ ¾øÀ» °ÍÀÌ´Ù.
ÀÌÁ¦±îÁö ¾ð±ÞÇß´ø ¿øÄ¢À» ÆÐÅÏÀ¸·Î »ç¿ëÇÏ´Â »ùÇüҽº¸¦ º¸µµ·Ï ÇÏÀÚ.
¾Æ·¡ ¸Þ¼Òµå´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÀüÇ¥ ³»¿ëÀ¸·Î ÀüÇ¥ µî·ÏÀ» ÇÏ´Â ¸Þ¼ÒµåÀÌ´Ù. ÀÌ ¼¼¼Çºó À̸§Àº SlipManagerÀÌ´Ù.
| |
public class SlipManagerEJB implements javax.ejb.SessionBean{
/* SlipInfo °´Ã¼´Â ÀüÇ¥ ³»¿ëÀ» ´ã°í Ŭ·¡½º°£¿¡ Åë½ÅÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ±¸Á¶Ã¼¼º°ÝÀÇ Å¬·¡½ºÀÓ */
public int regSlip(SlipInfo[] sInfos) throws Exception{
{
Connection conn = null;
int maxSlipNo = 0;
/* DBWrapper Ŭ·¡½º ¼±¾ð ¹× »ý¼º */
DBWrapper db = new DBWrapper();
try{
conn = DBManager.getConnection();
/* ¸¶°¨¿©ºÎüũÇÑ´Ù */
db.checkClosingState(conn, ...);
/* ÀüÇ¥¹øÈ£ MAX°ªÀ» ¹Þ¾Æ¿Â´Ù*/
maxSlipNo = db.getMaxSlipNo(conn, ...);
/* ÀüÇ¥ TABLE¿¡ ÀμƮ¸¦ ÇÑ´Ù.*/
for( int i=0 ; i < sInfos.length; i++){
sInfos.setSlipNo( maxSlipNo);
db.insertSlip( conn, sInfos[i]);
}
}
catch(Exception e){
throw new Exception(e.getMessage());
}
finally{
try{
DBManager.closeConnection(conn);
}catch(Exception se){
throw new Exception(se.getMessage());
}
}
return maxSlipNo;
}
... ( ÀÌÇÏ »ý·« )
}
| |
 |
ÀüÇ¥¸¦ µî·ÏÇÏ´Â ºñÁî´Ï½º ÇÁ·Î¼¼½º´Â »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÀüÇ¥Á¤º¸¸¦ ¹Þ¾Æ¼ ¸¶°¨¿©ºÎ¸¦ üũÇÑ ÈÄ, ÀüÇ¥ ¹øÈ£ MAX °ªÀ» ¾Ë¾Æ³»°í ÀüÇ¥ TABLE¿¡ INSERT ÇÏ´Â ÀÛ¾÷À¸·Î ¿ä¾àµÈ´Ù. ¹°·Ð ½ÇÁ¦ ¾÷¹«´Â À̺¸´Ù ÈξÀ ´õ º¹ÀâÇÑ °æ¿ìÀÇ ¼ö¸¦ °¡Áö°í ÀÖ´Ù. ¹ýÀÎÄ«µå»ç¿ëÁ¤º¸°¡ ÀÖ´Â °æ¿ì ¹ýÀÎÄ«µå »ç¿ëÁ¤º¸¿¡µµ µî·ÏÀ» ½ÃÄÑ¾ß Çϰí, ¿¹»ê¿¡¼ ÁöÃâµÇ´Â ÀüÇ¥ÀÏ °æ¿ì ¿¹»ê Á¤º¸¿¡µµ ±× ³»¿ªÀ» ±â·ÏÇØ¾ß ÇÏ´Â µî ´Ù¾çÇÑ ¾÷¹« Á¤ÀǸ¦ Æ÷ÇÔÇϰí ÀÖ´Ù.
¼Ò½º¸¦ º¸¸é ¾Ë°ÚÁö¸¸ À§¿¡¼ Á¤ÇÑ ¿øÄ¢´ë·Î Connectin °´Ã¼´Â Áö¿ªº¯¼ö·Î ¼±¾ðÇÏ¿© »ç¿ëÇϰí ÀÖÀ¸¸ç, DB·¡ÆÛ Ŭ·¡½ºÀÇ ¸Þ¼Òµå¿¡ Connection °´Ã¼¸¦ ³Ñ±â°í ÀÖ´Ù.
¸Þ¼Òµå ¿À¹ö·Îµù(OVERLOADING)
ÀÌÁ¦ ´Ù¸¥ ½Ã½ºÅÛÀÇ ¾÷¹«°¡ ÀÌ ¸Þ¼Òµå¸¦ »ç¿ëÇØ¾ß ÇÏ´Â ¾÷¹« ¿ä±¸»çÇ×ÀÌ »ý±æ °æ¿ì¿¡ ´ëÇØ »ìÆìº¸°Ú´Ù. Àλç½Ã½ºÅÛ¿¡ º¹¸®ÈÄ»ýºñ ½ÅûÁ¤º¸°¡ °áÀçÀÚÀÇ ½ÂÀÎÀ» ¹ÞÀ¸¸é ÀÚµ¿À¸·Î ÀüÇ¥°¡ ¹ßÇàµÇ¾î¾ß ÇÏ´Â ¿ä±¸»çÇ×ÀÌ ³ª¿Ô´Ù Ä¡ÀÚ.
ÇÁ·Î±×·¥ ¼³°èÀÚ´Â ÀüÇ¥µî·ÏÀ̶ó´Â ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ ±¸ÇöÇÑ ¸Þ¼Òµå°¡ SlipManager¶ó´Â ¼¼¼Çºó¿¡ ÀÌ¹Ì ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖÀ¸¹Ç·Î, ÀÌ ºÎºÐÀº µû·Î ÀüÇ¥ µî·Ï ¸Þ¼Òµå¸¦ ¸¸µéÁö ¾Ê°í ±âÁ¸ °ÍÀ» Àç»ç¿ëÇϱâ·Î ÇÑ´Ù.
¾Æ·¡¼Ò½º´Â ÀÌó·³ À§ÀÇ ¼¼¼ÇºóÀ» ÀüÇ¥µî·Ï ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â º¹¸®ÈÄ»ýºñ ½ÅûÁ¤º¸ ½ÂÀÎ ÇÁ·Î¼¼½º¸¦ º¸¿©ÁÖ°í ÀÖ´Ù.
| |
/* SubmitInfo °´Ã¼´Â º¹¸®ÈÄ»ýºñ ½ÅûÁ¤º¸ */
public boolean approveWelfare(SubmitInfo info) throws Exception{
{
Connection conn = null;
int maxSlipNo = 0;
boolean success = false;
/* DBWrapper Ŭ·¡½º ¼±¾ð ¹× »ý¼º */
DBWrapper db = new DBWrapper();
try{
conn = DBManager.getConnection();
/* ÇöÀç ½Åû»óÅÂÀÓÀ» È®ÀÎÇÑ´Ù. */
db.checkState(conn, ...);
/* °³Àκ° ¾µ ¼ö ÀÖ´Â º¹¸®ÈÄ»ýºñ ±Ý¾×À» Á¶È¸Çؼ ÃʰúÇÏ¸é °æ°í¸Þ¼¼Áö·Î ¾Ë¸² */
success = db.checkWonAmt(conn, ...);
if( success == false){
Exception e = new Exception();
e.setMessage(" Ãʰú ... ");
throw e;
}
/*
ÀüÇ¥¸¦ µî·ÏÇϱâ À§ÇØ ÀüÇ¥ µî·Ï ¼¼¼ÇºóÀÇ ¸®¸ðÆ® °´Ã¼¸¦
HomeÀÇ create ¸Þ¼Òµå¸¦ ÀÌ¿ë , »ý¼º½ÃŲ´Ù
*/
SlipManagerHome slipMgrHome = (SlipManagerHome)HomeFactory.getHome(SlipManager.class);
SlipManager slipMgr = slipMgrHome.create();
maxSlipNo = slipMgr.regSlip( info.getSlipInfos());
if( maxSlipNo > 0 ) success = true;
}
catch(Exception e){
throw new Exception(e.getMessage());
}
finally{
try{
DBManager.closeConnection(conn);
}catch(Exception se){
throw new Exception(se.getMessage());
}
}
return success;
}
| |
 |
À§ ¼Ò½º¸¦ º¸¸é ÀüÇ¥µî·Ï ¸Þ¼Òµå¸¦ Àç»ç¿ë Çϰí ÀÖÀ¸³ª ÇѰ¡Áö ¿ì·ÁµÇ´Â Á¡ÀÌ ÀÖ´Ù. ¹Ù·Î ¼¼¼ÇºóÀÇ ¸Þ¼Òµå¸¦ ÄÝ ÇÏ´Â °Í ±îÁö´Â ¹®Á¦°¡ ¾øÀ¸³ª, ÀüÇ¥ µî·Ï È£Ãâ½Ã ¼¼¼Çºó¿¡°Ô´Â Connection °´Ã¼¸¦ ´øÁöÁö ¾ÊÀ¸¹Ç·Î È£ÃâµÇ´Â ¼¼¼ÇºóÀÌ ConnectionÀ» µû·Î »ý¼º½ÃÄÑ ÀÛ¾÷À» Çϰí ÀÖ´Ù.
À§¿Í °°Àº ¾÷¹«¿¡¼´Â ¼¼¼ÇºóÀÇ ¸Þ¼Òµå¸¦ Çѹø È£ÃâÇϰí ÀÖÁö¸¸ ¸¸¾à »ç¿ëÀÚ°¡ ¾÷¹« º¹¸®ÈÄ»ýºñÀüÇ¥¸¦ 100Àå »ý¼º½ÃÄÑ¾ß ÇÏ´Â °æ¿ì¶ó¸é ¾Æ·¡¿Í °°Àº for loop ¹®À¸·Î ÄÝ ÇÏ°Ô µÉ °ÍÀÌ´Ù.
| |
SlipInfo[] infos = info.getSlipInfos();
for( int i=0; i < infos.length ; i++){
slipMgr.regSlip( infos[i]);
}
| |
 |
°á±¹ ConnectionÀº 100°³°¡ »ý¼ºµÇ°í, 100°³°¡ ¹ÝȯµÇ´Â ÀÛ¾÷ÀÌ ÀϾÙ. ¿ª½Ã³ª ½Ã½ºÅÛ ÀÚ¿ø¿î¿ë ¸é¿¡¼ º¸¸é »ó´çÇÑ ¹®Á¦Á¡À» ¾ß±â½ÃŰ´Â ºÎºÐÀÏ °ÍÀÌ´Ù.
µû¶ó¼ À̿Ͱ°ÀÌ Å¸ ¼¼¼Çºó¿¡¼ È£ÃâÇÏ´Â ¸Þ¼ÒµåÀÏ °æ¿ì, DB ·¡ÆÛ¿Í Åë½Å½Ã¿¡ Connection °´Ã¼¸¦ ³Ñ°åµí ¼¼¼Çºó ¸Þ¼Òµå¿Í Åë½Å½Ã¿¡ ConnectionÀ» ³Ñ°Ü¼ »ç¿ëÇÏ´Â ÆÐÅÏÀ¸·Î °¡¾ß ÇÒ °ÍÀÌ´Ù.
À§ÀÇ ÀüÇ¥»ý¼º¸Þ¼Òµå¸¦ ConnectionÀ» ¹Þ¾Æ¼ ÀÛ¾÷ÇÏ´Â ¸Þ¼Òµå·Î °íÃļ ¼³°èÇØº¸ÀÚ. ¹°·Ð ÀÌ ConnectionÀ» »ý¼º½ÃŰ°í ´Ý¾ÆÁÖ´Â ÁÖü´Â ÀüÇ¥»ý¼º ¸Þ¼Òµå¸¦ ÄÝÇÑ ¼¼¼ÇºóÀÌ ÇÏ°Ô µÈ´Ù. ±×·¸´Ù¸é ¾Æ·¡ ¼Ò½ºÃ³·³ regSlip ¸Þ¼Òµå¸¦ ¿À¹ö·Îµù ÇÑ ¸Þ¼Òµå¸¦ Ãß°¡·Î °³¹ßÇÑ´Ù.
| |
public int regSlip(Connection conn , SlipInfo[] sInfos) throws Exception{
{
int maxSlipNo = 0;
boolean success = false;
DBWrapper db = new DBWrapper();
try{
db.checkClosingState(conn, ...);
maxSlipNo = db.getMaxSlipNo(conn, ...);
for( int i=0 ; i < sInfos.length; i++){
sInfos.setSlipNo( maxSlipNo);
db.insertSlip( conn, sInfos[i]);
}
}
catch(Exception e){
throw new Exception(e.getMessage());
}
return maxSlipNo;
}
| |
 |
ÀÌ·¯ÇÑ ¸Þ¼Òµå°¡ Ãß°¡µÇ¸é ¸ÕÀú ¸¸µé¾î µÎ¾ú´ø regSlip ¸Þ¼Òµå´Â ¾Æ·¡¿Í °°ÀÌ regSlip(Connection conn , SlipInfo[] sInfos)¸¦ È£ÃâÇÏÀÚ. ½ÇÁ¦ ºñÁî´Ï½º ÇÁ·Î¼¼½º´Â regSlip(Connection conn , SlipInfo[] sInfos)¾È¿¡ ¸ðµÎ ÀÖÀ¸¹Ç·Î, ÀÌ ¸Þ¼Òµå¸¦ ±âÁ¸ ±×´ë·Î ³öµÎ¸é Áߺ¹Äڵ尡 ÀÖ°Ô µÈ´Ù.
| |
public int regSlip(SlipInfo[] sInfos) throws Exception{
{
Connection conn = null;
int maxSlipNo = 0;
try{
conn = DBManager.getConnection();
maxSlipNo = regSlip( conn , sInfos );
}
catch(Exception e){
throw new Exception(e.getMessage());
}
finally{
try{
DBManager.closeConnection(conn);
}catch(Exception se){
throw new Exception(se.getMessage());
}
}
return maxSlipNo;
}
| |
 |
ÀÌ¿Í °°ÀÌ ¼¼¼Çºó ¸Þ¼Òµå´Â ´Ù¸¥ ¼¼¼Çºó ¸Þ¼Òµå°¡ ¾÷¹«»ó È£ÃâÇÒ ¼ö ÀÖ´Â °æ¿ì°¡ ºó¹øÇϹǷÎ, ¼¼¼Çºó ¸Þ¼Òµå¸¦ Connection ¹Þ´Â °Í°ú ¾È ¹Þ´Â °ÍÀ¸·Î ¿À¹ö·ÎµùÇÏ´Â ÆÐÅÏÀ» »ç¿ëÇÏ°Ô µÈ´Ù.
¼¼¼Çºó ¸Þ¼Òµå´Â ´Ù¼ö Äõ¸®¸¦ ½ÇÇà½ÃŰ´Â ÁýÇÕü
EJB ±â¹Ý ÇÁ·ÎÁ§Æ®ÀÇ °¡Àå Å« ¿µ¿ªÀº ¼¼¼ÇºóÀÌ´Ù. ¼¼¼Çºó ³»¿¡¼ ¸ðµç ºñÁî´Ï½º ÇÁ·Î¼¼½º°¡ ±¸ÇöµÇ¹Ç·Î, ¼¼¼Çºó ¾È¿¡¼ ±âŸ Ŭ·¡½ºµéÀ» ¾î¶°ÇÑ ÆÐÅÏÀ¸·Î »ç¿ëÇÒ Áö °í¹ÎÇÏ¸ç ¼³°èÇÏ°í ±¸ÇöÇØ¾ß Àç»ç¿ë¼ºÀÌ ³ô°í °·ÂÇÑ ¸ðµâÀ» ¸¸µé ¼ö ÀÖ´Ù.
´ÙÀ½ °ÀÇ¿¡¼´Â ½ÇÁ¦ ¾÷¹«¿¡¼ ÀϾ´Â º¹ÀâÇÑ ÇÁ·Î¼¼½º¸¦ ±¸ÇöÇÔ¿¡ ÀÖ¾î¼ DBMSÀÇ Æã¼ÇÀ̳ª ÇÁ·Î½ÃÁ®¸¦ »ç¿ëÇÏ´Â °ÍÀÇ ÀåÁ¡À» »ìÆìº¸µµ·Ï ÇϰڴÙ.
2ȸ±îÁö´Â ¼¼¼Çºó »ç¿ë¿¡ ÀÖ¾î¼ÀÇ Å¬·¡½º ÆÐÅϰú, ½Ã½ºÅÛ ¼º´É Ãø¸é¿¡¼ ¾î¶² Á¡À» ÇÇÇØ°¡¾ß ÇÏ´ÂÁö°¡ ÁÖµÈ ³íÁ¡À̾ú´Ù. ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼´Â ÀÌ Á¤µµ·Î ´ëºÎºÐÀÇ À̽´°¡ Ä¿¹öµÇ°ÚÁö¸¸, ¸·»ó ±¸Çö °á°ú¹°À» º¸¸é ¼¼¼Çºó ¸Þ¼Òµå°¡ ¼ö¸¹Àº Äõ¸®¸¦ ½ÇÇà½ÃŰ´Â ÁýÇÕü·Î º¸ÀδÙ.
±×·¸´Ù¸é À̰ÍÀ» ´Ü ÇÑ ¹øÀÇ ½ÇÇàÀ¸·Î ³¡³»¹ö¸®´Â ¹æ¹ýÀº ¾øÀ»±î. ´ÙÀ½ °ÀÇ¿¡¼ ±× ¹æ¹ý¿¡ ´ëÇØ ³íÀÇÇØº¸ÀÚ. @