[Áöµð³ÝÄÚ¸®¾Æ]¨ç ¼¼¼Çºó¿¡¼ÀÇ DB Á¢±ÙÀü·« ¹× ¿£ÅÍÆ¼ºó »ç¿ë½Ã ÁÖÀÇ»çÇ×
¨è ¼¼¼Çºó¿¡¼ÀÇ Æ®·£Àè¼Ç °ü¸®
¨é ºñÁî´Ï½º ÇÁ·Î¼¼½º ±¸Çö ÃÖÀûÈÇϱâ
¨ê ´É·ü ³ô¿©ÁÖ´Â À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏÀÚ
EJB ¾ÆÅ°ÅØÃ³¸¦ ±â¹ÝÀ¸·Î À¥¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÏ´Â ÇÁ·ÎÁ§Æ®µéÀÌ 2000³â ÀÌÈĺÎÅÍ Áõ°¡ÇØ¿ÔÀ½Àº ¸ðµÎ°¡ ¾Æ´Â »ç½Ç. ´õºÒ¾î EJB °ü·Ã ¼Àûµéµµ ´Ù¾çÇÏ°Ô ÃâÆÇµÆ°í, EJB¸¦ »ç¿ëÇÏ´Â °³¹ßÀڵ鵵 ´Ã¾î³ª°í ÀÖ´Ù.
±×·¯³ª ½ÇÁ¦ EJB¸¦ »ç¿ëÇÏ¸é¼ °³¹ßÀÚµéÀÌ ÀúÁö¸£±â ½¬¿î ½Ç¼ö, ÇÔÁ¤ µîÀº ¾ÆÁ÷ ¼Àû¿¡¼´Â Ä£ÀýÈ÷ ¾È³»µÇ¾î ÀÖÁö ¾ÊÀº µí ÇÏ´Ù. À̹ø °ÁÂÀÇ ¸ñÀûÀº ÈçÈ÷ °³¹ßÀÚµéÀÌ ½º½º·Î Àß ¾È´Ù°í »ý°¢ÇÏ´Â °Í ¶§¹®¿¡ ºüÁú ¼ö ÀÖ´Â ÇÔÁ¤µéÀ» ¹Ì¸® ¤¾îº½À¸·Î½á ±× ÇÔÁ¤ÀÌ ÃÊ·¡ÇÒ È¥¶õÀ» ÃÖ¼ÒÈÇϴµ¥ ÀÖ´Ù.
°Á Áß°£Áß°£ ÆÛÆ÷¸Õ½º¸¦ °í·ÁÇÑ ÆÁÀÌ ¾ð±ÞµÉ ¼öµµ ÀÖ°í, Ŭ·¡½º ¼³°è¿Í °ü·ÃµÈ ÷¾ðµµ µé¾î°¥ ¼ö ÀÖ´Ù. ÀÌ °ÁÂÀÇ ¸ñÀûÀ̳ª ¼º°ÝÀÌ ÇϳªÀÇ °³³ä¿¡ ´ëÇÑ ¼øÂ÷ÀûÀÎ ¼³¸í Çü½ÄÀº ¾Æ´Ï¹Ç·Î ±âº»°³³ä ¼³¸íÀ» °Ç³Ê¶Ù°Å³ª, µ¿½Ã¿¡ Ãʺ¸ ÀÚ¹Ù °³¹ßÀÚµµ ¾Ë°í ÀÖ´Â »çÇ׿¡ ´ëÇØ »õ»ï ÁöÀûÇÏ´Â °æ¿ìµµ ÀÖÀ» °ÍÀÌ´Ù.
Àڽſ¡°Ô ´ÚÄ¥ ¼öµµ ÀÖ´Â ¹®Á¦¸¦ ¹Ì¸® ÆÄ¾ÇÇØ º¸°í, ¾î¶°ÇÑ ¹æ¹ýÀ¸·Î ¿¹¹æÇϰí ÇØ°áÇØ¾ßÇÏ´ÂÁö »ìÆìº¸µµ·Ï ÇÏÀÚ. À̹ø °Á¿¡¼ ¾ð±ÞµÉ ¿¹½Ã¿¡¼ ¾²´Â EJBÀÇ ½ºÆåÀº 1.1¹öÀüÀ̰í, DBMS´Â ¿À¶óŬ 8iÀÌ´Ù.
DB¿ÍÀÇ ¿¬°áÀº ´©°¡, ¾ðÁ¦, ¾î¶»°Ô ÇÒ±î?
EJB ¾ÖÇø®ÄÉÀ̼ÇÀÌ DB¿ÍÀÇ ¿¬°áÀÚ¿øÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀº 2°¡Áö´Ù.
ù°, ConnectionPool À» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. EJB ¼¹ö°¡ Çü¼ºÇÏ°Ô µÇ´Â ¡®ConnectionPool¡¯À̶ó´Â µ¥ÀÌÅÍ ¼Ò½º¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. ÀÓÀÇÀÇ ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ ´ã´çÇÏ´Â ¼¼¼ÇºóÀÇ ¸Þ¼Òµå ³»¿¡¼ DBÀÇ ·¹Äڵ带 ½á¾ßÇÒ °æ¿ì, ConnectionPool¿¡¼ java.sql.Connetion °´Ã¼¸¦ ¹Þ¾Æ ¾²´Â °æ¿ìÀÌ´Ù.
À¥·ÎÁ÷(weblogic), À¥½ºÇǾî(websphere), JBOSS µî ´Ù¾çÇÑ ¾÷üµéÀÇ EJB ¼¹ö¸¶´Ù ±âµ¿½Ã ConnetionPoolÀ» »ý¼º½Ãų ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÑ´Ù. ±âµ¿½Ã ÀоîµéÀÌ´Â ÇÁ·ÎÆÛƼ ÆÄÀÏ¿¡ DBÀÇ URL, SID, user name, ÆÐ½º¿öµå, ConnectionPoolÀÇ name±îÁö »ç¿ëÀÚ°¡ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
¾Æ·¡´Â À¥·ÎÁ÷ ¼¹ö(¹öÀü 5.1)ÀÇ weblogic.properties ÆÄÀÏ ³»ÀÇ ConnetionPool ¼³Á¤Á¤º¸ ºÎºÐÀÌ´Ù.
# testPool
weblogic.JBDC.connectionPool.testPool=\
url=JBDC:oracle:thin:@123.4.5.67:portNumber:sid¸í,\
driver=oracle.JBDC.driver.OracleDriver,\
initialCapacity=1,\
maxCapacity=10,\
CapacityIncrement=2,\
allowShrinking=true,\
shrinkPeriodMins=15,\
props=user=user¸í;password=ÆÐ½º¿öµå
| |
ÀÌ·¸°Ô EJB ¼¹ö ±âµ¿½Ã ¹Ì¸® ConnectionPoolÀ» ¸¸µé°Ô µÇ¸é ¾ÖÇø®ÄÉÀÌ¼Ç ¿î¿µÁß ¹ß»ýÇÏ°Ô µÇ´Â DBMS ¿ÍÀÇ ºó¹øÇÑ ¿äûÀÌ ÀÖÀ» ¶§¸¶´Ù JBDC µå¶óÀ̹ö·Î DB¿Í ÀÏÀÏÀÌ ¿¬°áÇÒ ÇÊ¿ä¾øÀÌ, ¸¸µé¾îÁø ConnetionPool¿¡¼ ConnetionÀ» ²¨³» ¾²°í ´Ù½Ã ¹ÝȯÇϹǷΠ½Ã½ºÅÛ ÆÛÆ÷¸Õ½º Ãø¸é¿¡¼ ¿ùµîÈ÷ È¿À²ÀûÀÌ´Ù.
µÑ°, ¿£ÅÍÆ¼ºóÀ» Ȱ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. ¿£ÅÍÆ¼ºó Áß¿¡¼µµ ÄÁÅ×À̳ʰ¡ ÆÛ½Ã½ºÅϽº¸¦ °ü¸®ÇØÁÖ´Â CMP ¿£ÅÍÆ¼ºóÀ» EJB ¼¹ö¿¡ ¹èÄ¡ÇØ ¾²¸é °³¹ßÀÚ ÀÔÀå¿¡¼´Â ¸¹Àº ºÎ´ãÀ» ´ú ¼ö Àֱ⠶§¹®¿¡ ´ëºÎºÐÀÇ ÇÁ·ÎÁ§Æ®¿¡¼ BMP ¿£ÅÍÆ¼ºó º¸´Ù´Â CMP ¿£ÅÍÆ¼ºóÀ» »ç¿ëÇÑ´Ù.
¿£ÅÍÆ¼ºó °´Ã¼ Çϳª´Â DBÀÇ ÇϳªÀÇ Å×À̺íÀ» ´ëÇ¥Çϸç, ¿£ÅÍÆ¼ºó °´Ã¼°¡ °®°í ÀÖ´Â ÇʵåµéÀº ÇØ´ç Å×À̺íÀÇ Ä÷³°ú ¸ÅÇεȴÙ. ¿£ÅÍÆ¼ºóÀÇ ÀνºÅϽº´Â DBÀÇ ÀÓÀÇÀÇ ·¹Äڵ带 °´Ã¼ÈÇÑ °ÍÀÌ´Ù. ±×·¯¹Ç·Î ¿£ÅÍÆ¼ºóÀÇ ÀνºÅϽº¸¦ È£ÃâÇÏ¿©, get, create, set, remove µîÀÇ ¸Þ¼Òµå¸¦ ¾´´Ù¸é, Á÷Á¢ SQL¹®À» DB·Î ³¯¸®Áö ¾Ê¾Æµµ µ¿ÀÏÇÑ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Ù. insert ¹® ´ë½Å create ¸Þ¼Òµå¸¦ ¾²¸é µÇ¹Ç·Î ÄÚµùÀÌ °£°áÇØÁø´Ù. ´õºÒ¾î SQL¹®¿¡ Àͼ÷ÇÏÁö ¾ÊÀº °³¹ßÀÚ¶óµµ ½±°Ô ¾µ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù.
±×·¯³ª ¿£ÅÍÆ¼ºóÀÇ ÀÌ·¯ÇÑ, ¼ÒÀ§ ÀåÁ¡À̶ó°í ÇÏ´Â °Íµé¿¡ ¼²ºÒ¸® ÇöȤµÇÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. EJB ÇÁ·ÎÁ§Æ®¿¡¼ ¹ß»ýÇÏ´Â ¹®Á¦ÀÇ ¿øÀÎÀº ´ëºÎºÐ ¿£ÅÍÆ¼ºó¿¡ ÀÖ´Ù.
DB Çڵ鸵 ÁÖü´Â ¼¼¼Çºó
DB¿¡ ¾î¶»°Ô Á¢±ÙÇÏµç ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ ´ã´çÇÏ´Â ÁÖü´Â ¼¼¼ÇºóÀÌ´Ù. ±×¸®°í ºÐ¼®µÈ ¾÷¹« È帧À» ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î ±¸ÇöÇÒ ¶§ÀÇ ÃÖ¼Ò´ÜÀ§´Â ¼¼¼ÇºóÀÇ ¸Þ¼ÒµåÀÌ´Ù.
¿¹¸¦ µé¾î ±Þ¿©°è»ê ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù¸é ¼¼¼Çºó ³»ÀÇ calcuratorPay(String empNo, String yyyyMm)¶ó´Â ¸Þ¼Òµå°¡ ÀÖÀ» °ÍÀ̰í, º¹¸®ÈÄ»ýºñ ½Åû ÇÁ·Î±×·¥Àº submitWelfare(String empNo, String date, ...)¶ó´Â ¸Þ¼Òµå¸¦ ÄÝÇÑ´Ù.
°³¹ßÀÚ´Â ¼¼¼ÇºóÀÇ ¸Þ¼Òµå ¾È¿¡¼ ÀûÀýÈ÷ Àú µÎ°¡Áö ¹æ¹ýÀ» Ȱ¿ëÇØ DBÀÇ ·¹Äڵ带 Çڵ鸵ÇÏ°Ô µÈ´Ù. ¿£ÅÍÆ¼ºó ÀνºÅϽº°¡ DBÀÇ ·¹Äڵ带 Ç¥ÇöÇÑ´Ù°í ÇØµµ, ¾öû³ª°Ô ´Ù¾çÇÑ Á¶°Ç ¹× ÇÔ¼ö µîÀÌ ´ã°ÜÀÖ´Â select ¹®ÀÇ È¿°ú¸¦ ¿£ÅÍÆ¼ºó ÀνºÅϽº¸¦ »ç¿ëÇØ¼ ÀÚ¹Ù ÄÚµùÀ¸·Î ¾òÀ» ¼ö Àְڴ°¡? ¾ø´Ù.
µû¶ó¼ ±×·¯ÇÑ ´Ù¾çÇÑ Á¶È¸¸¦ ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì¿¡´Â ConnectionPool ¿¡¼ connection °´Ã¼¸¦ Çϳª ¾ò¾î¿Í¼ ¾²°Ô µÈ´Ù. »Ó¸¸ ¾Æ´Ï¶ó update, delete, insert µî¿¡¼µµ pk °ªÀ¸·Î¸¸ Á¶È¸Çؼ ±× °ªÀ» º¯°æ, »èÁ¦, Ãß°¡ÇÏ´Â °æ¿ìº¸´Ù Ãß°¡ÀûÀÎ Á¦¾àÀÌ µû¸£´Â °æ¿ì°¡ ¸¹´Ù.
°á±¹ Àüü ½Ã½ºÅÛÀÇ ¸ðµç ¼¼¼ÇºóÀÌ connetion °´Ã¼¸¦ ¾²´Â °æ¿ì°¡ ÈξÀ ¸¹±â ¶§¹®¿¡, ¸ðµç ¼¼¼ÇºóÀÌ ÄÝ ÇÒ ¼ö ÀÖ´Â °øÅë ¸ðµâ·Î connectionPool ¿¡¼ connection °´Ã¼¸¦ Çϳª »Ì¾Æ ¸®ÅÏÇØÁִ Ŭ·¡½ºÀÇ °³¹ß ÇÊ¿ä»çÇ×ÀÌ ¹ß»ýÇÑ´Ù. ÀÌ Å¬·¡½º¿¡´Â getConnetion() ¹× closeConnection() ¸Þ¼Òµå°¡ À§Ä¡ÇÏ°Ô µÉ °ÍÀÌ´Ù.
¾Æ·¡ ¿¹½Ã¿¡¼ µîÀåÇÏ°Ô µÇ´Â ConnManager¶ó´Â Ŭ·¡½º´Â ÀÌ·¯ÇÑ ¿ªÇÒÀ» Çϴ Ŭ·¡½º´Ù.
¿¹½Ã ¼Ò½ºÄڵ带 º¸ÀÚ. »ç¹øÀ» ÅëÇØ »ç¿ø¸íÀ» Á¶È¸ÇÏ´Â ¸Å¿ì °£´ÜÇÑ ¸Þ¼ÒµåÀÌ´Ù.
public Ŭ·¡½º EmpManagerEJB implements javax.ejb.¼¼¼Çºó{
public EmpManagerEJB()
{
}
public String getEmpName(String empNo) throws Exception
{
Connection con = null;
String eName = null;
try {
con = ConnManager.getConnection();
EmpDB DB = new EmpDB();
eName = DB.getEmpName(con,empNo);
} catch(Exception e) {
throw new Exception(e.toString());
} finally {
try {
ConnManager.closeConnection(con);
} catch(Exception e) {
throw new Exception(e);
}
}
return eName;
}
// ---------------------------------------------------------------
// ¼¼¼Çºó interface implementation
public void ejbActivate()
{
// to do: code goes here.
}
.... ÀÌÇÏ »ý·«,
}
| |
À§ÀÇ ¿¹½Ã¿¡¼ º¸µíÀÌ ¼¼¼Çºó ¸Þ¼Òµå ³»¿¡¼´Â Connection °´Ã¼¸¦ °¡Áö°í ¿Í¼ ¸¶Áö¸·¿¡ ´Ý°í, ÀÚ½ÅÀ» È£ÃâÇÑ Å¬¶óÀÌ¾ðÆ®¿¡°Ô »ç¿ø¸íÀ» Àü´ÞÇÏ´Â Àϸ¸ Çϰí ÀÖ´Ù. Á÷Á¢ÀûÀ¸·Î DB¿¡ °®´Ù¿À´Â ÀÏÀº EmpDB¶ó´Â Ŭ·¡½º¿¡°Ô ¸Ã±ä´Ù. ´Ù¾çÇÑ ¾÷¹«¸¦ ¹Ý¿µÇÏ´Â ¼¼¼Çºó ¸Þ¼Òµå ³»¿¡¼´Â ÀÌ¿Í °°Àº ÆÐÅÏÀÌ º¸´Ù È¿°úÀûÀÌ°í °£°áÇÏ´Ù.
±×·¸´Ù¸é EmpDB¶ó´Â Ŭ·¡½ºÀÇ getEmpName ¸Þ¼Òµå¸¦ »ìÆìº¸ÀÚ.
public String getEmpName(Connetion con , String empNo)
throws Exception {
String eName = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
/*
SELECT
EMP_NAME
FROM EMP
WHERE EMP_NO = '000001'
*/
String sql =
"SELECT " +
" EMP_NAME " +
"FROM EMP " +
"WHERE EMP_NO = ? ";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, empNo);
rs = pstmt.executeQuery();
if(rs.next()) {
eName = rs.getString("EMP_NAME"));
}
} finally {
ConnManager.closeResultSet(rs);
ConnManager.closeStatement(pstmt);
}
return eName;
}
| |
»ç¹ø Å×ÀÌºí¿¡¼ »ç¿ø ¹øÈ£·Î »ç¿ø¸íÀ» ¸®ÅÏÇÏ´Â ¸Þ¼ÒµåÀÌ´Ù. ÀÌ ¸Þ¼Òµå Áß¿¡¼ °¡Àå ÁÖÀDZí°Ô ºÁ¾ß ÇÒ ºÎºÐÀº PreparedStatement¸¦ Statement interface ´ë½Å »ç¿ëÇÑ ºÎºÐÀÌ´Ù. Á¶È¸¼º Äõ¸®¸¦ DB¿¡ ´øÁö°íÀÚ ÇÒ °æ¿ì ¾Æ¹« »ý°¢¾øÀÌ Statement interface¸¦ »ç¿ëÇÏ´Â °³¹ßÀÚ°¡ ¸¹Àºµ¥, ÀÌ·¸°Ô ¸¸µé¾î¼´Â ¾ÈµÈ´Ù.