Connection PoolingÀ̶ó´Â ±â¹ýÀº ¸» ±×´ë·Î, µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» ¿©·¯ °³ ¸¸µé¾î¼ ƯÁ¤ °ø°£¿¡ ÀúÀåÇØ ³õ°í, ¿©·¯ »ç¿ëÀÚ°¡ ÇÊ¿äÇÒ ¶§ ¸¶´Ù Çϳª¾¿ ²¨³»¼ »ç¿ëÇÏ°í ´Ù½Ã Áý¾î³Ö´Â(Pooling) ¹æ½ÄÀ» ¸»ÇÕ´Ï´Ù. ÀÌÇØ¸¦ µ½±â À§ÇØ ´ÙÀ½ ±×¸²À» ÂüÁ¶ÇϰڽÀ´Ï´Ù.
±×¸² 19‑9 Connection Pool¿¡¼ ConnectionÀ» ²¨³»¿À´Â ¸ð½À
±×¸² 19‑10 »ç¿ëÇÑ ConnectionÀ» Connection Pool¿¡ ¹Ý³³ÇÏ´Â ¸ð½À
ÀÌÀü±îÁö »ç¿ëÇÑ JDBC ¿¹Á¦¿¡¼´Â ÇÊ¿äÇÒ ¶§¸¶´Ù Á÷Á¢ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» »ý¼ºÇϰí, »ç¿ëÀÌ ³¡³ª¸é Á÷Á¢ ¿¬°áÀ» ÇØÁ¦ ½ÃÄÑÁÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸, Connection Pooling ±â¹ý¿¡¼´Â Connection PoolÀ̶ó´Â Ä¿³Ø¼Ç °ü¸®ÀÚ°¡ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀÇ ¿¬°á°ú ÇØÁ¦¸¦ Á÷Á¢ °ü¸® ÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º ÀÛ¾÷À» ¼öÇàÇÒ ClientŬ·¡½ºµéÀº Connection Pool·ÎºÎÅÍ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» Çϳª ÇÒ´ç ¹Þ¾Æ¼, ´Ù »ç¿ëÇÏ°í ³ ÈÄ¿¡´Â ´Ù½Ã Connection Pool¿¡°Ô ³Ñ°Ü ÁÝ´Ï´Ù. Connection Pool¿¡°Ô ³Ñ°ÜÁø µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀº ´Ù¸¥ ClientŬ·¡½º°¡ »ç¿ëÀ» ¿äûÇßÀ» ¶§ Àç»ç¿ëÀÌ µË´Ï´Ù.
Connection PoolingÀ» »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¡®¼Óµµ Çâ»ó¡¯°ú ¡®ÀÚ¿ø °øÀ¯¡¯ÀÇ µÎ °¡Áö Ãø¸é¿¡¼ »ìÆìº¼ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º ¿¬°áÀ» ÀǹÌÇÏ´Â ConnectionŬ·¡½º´Â °´Ã¼È µÉ ¶§, ´Ù¸¥ ÀϹÝÀûÀΠŬ·¡½ºµé°ú´Â ´Þ¸® ¼öÃÊÀÇ ½Ã°£ÀÌ °É¸³´Ï´Ù. ÀÌ ½Ã°£Àº ¸¸¾à µ¥ÀÌÅͺ£À̽º°¡ ¿ø°ÝÁö¿¡ Á¸ÀçÇÑ´Ù¸é, ³×Æ®¿÷ÀÇ »óÅ¿¡ µû¶ó ´õ Áö¿¬ÀÌ µÉ ¼öµµ ÀÖ½À´Ï´Ù.
¸¸¾à ¿ì¸®°¡ ¸¸µé ¾ÖÇø®ÄÉÀ̼ÇÀÌ ºó¹øÇÏ°Ô µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» »ý¼ºÇÑ´Ù¸é, ÀÌ·¯ÇÑ ½Ã°£ÀûÀÎ ¿À¹öÇìµå´Â Àüü ¾ÖÇø®ÄÉÀ̼ÇÀ» ´À¸®°Ô ¸¸µé °ÍÀÔ´Ï´Ù. ÀÌ °æ¿ì, ¾ÖÇø®ÄÉÀ̼ÇÀÌ ½ÃÀÛµÉ ¶§ ÀÏÁ¤¼öÀÇ Ä¿³Ø¼ÇÀ» ¹Ì¸® ¸¸µé¾î ³õ°í, Connection PoolÀ» ÅëÇØ Àç»ç¿ë ÇÑ´Ù¸é »ó´çÇÑ ¼Óµµ Çâ»óÀ» ±â´ëÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
¶Ç ´Ù¸¥ Ãø¸é¿¡¼ »ìÆìº¸¸é, µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ Ä¿³Ø¼ÇÀº ¿ì¸®ÀÇ ½Ã½ºÅÛÀÌ °¡Áö°í ÀÖ´Â ÀÚ¿ø(CPU, MEMORY, ³×Æ®¿÷ ´ë¿ªÆø µî)À» ÀÏÁ¤·® »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ½Ã½ºÅÛÀÇ ÀÚ¿øÀº ÇÑÁ¤ µÇ¾î Àֱ⠶§¹®¿¡, »ç¿ëÀÚ ¼ö°¡ ¸¹´Ù°í ÇØ¼, ¹«Á¦ÇÑ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» ¸¸µé ¼ö´Â ¾ø½À´Ï´Ù. ¸¸¾à ½Ã½ºÅÛÀÌ °¡Áö°í ÀÖ´Â ÀÚ¿øÀ» ÃʰúÇØ¼ Ä¿³Ø¼ÇÀ» »ý¼ºÇÏ°í »ç¿ëÇÑ´Ù¸é, Àüü ½Ã½ºÅÛÀÇ ¼º´ÉÀº Å©°Ô ¶³¾îÁú °ÍÀÔ´Ï´Ù. ¶ÇÇÑ °©Àڱ⠽ýºÅÛÀÌ Á¤ÁöÇÏ´Â µî ¿¹ÃøÇÒ ¼ö ¾ø´Â »óȲÀ» ºÒ·¯ ÀÏÀ¸Å³ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì¸¦ ¸·±â À§ÇØ, Connection Pool¿¡ ½Ã½ºÅÛÀÌ Çã¿ë °¡´ÉÇÑ ¼ö¸¸ÅÀÇ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» ¸¸µé¾î ³õ°í, °øÀ¯Çؼ »ç¿ëÇÔÀ¸·Î½á Àüü ½Ã½ºÅÛÀÇ ¼º´ÉÀ» Çâ»ó½ÃŰ°í ¾ÈÁ¤µÇ°Ô ¸¸µé¾î ÁÙ ¼ö ÀÖ½À´Ï´Ù.
±×·¯¸é, Áö±ÝºÎÅÍ ½ÇÁ¦·Î Connection Pooling ±â¹ýÀ» »ç¿ëÇÑ °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù. ÀÎÅͳÝÀ» ã¾Æº¸½Ã¸é Connection Pooling ±â¹ýÀ» ±¸ÇöÇØ ³õÀº ¸¹Àº ÆÐŰÁöµéÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. °¢ ÆÐŰÁöµéÀº Àú¸¶´Ù ´Ù¸¥ ¾Ë°í¸®ÁòÀ» »ç¿ëÇØ¼ °¢°¢ÀÇ Àå´ÜÁ¡À» °¡Áö°í ÀÖ½À´Ï´Ù. ¿ì¸®´Â ÀÌ Áß, ±âº»ÀûÀÌ°í °øÅëÀÌ µÇ´Â ºÎºÐµé¸¸À» °¡Áö°í ¿¹Á¦¸¦ ¸¸µé¾î º¼ °ÍÀÔ´Ï´Ù. ÀÌ ¿¹Á¦¸¦ ÅëÇØ Connection Pooling¿¡ ´ëÇØ °¨À» ÀâÀ¸½Ã°í ³ ÈÄ¿¡ º¸´Ù Á¤±³ÇÏ°í º¹ÀâÇÏ°Ô ±¸ÇöµÈ ÆÐŰÁö¸¦ °øºÎÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
±âº»ÀûÀ¸·Î Connection Pooling ±â¹ýÀ» »ç¿ëÇϱâ À§Çؼ±, µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» »ý¼ºÇϰí, ÇØÁ¦ÇØÁÖ´Â °Í°ú °°Àº ÀÏÀ» ´ã´çÇØÁÖ´Â Connection PoolÀ̶ó´Â Ä¿³Ø¼Ç °ü¸®ÀÚ°¡ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ Connection PoolÀº Á¤ÇØÁø ¼ö¸¸Å Ä¿³Ø¼ÇÀ» ¸¸µé°í, ClientŬ·¡½ºµéÀÌ Ä¿³Ø¼ÇÀ» ¿äûÇßÀ» ¶§ ÇöÀç »ç¿ëµÇ°í ÀÖÁö ¾ÊÀº Ä¿³Ø¼ÇÀ» ³Ñ°Ü ÁÝ´Ï´Ù. ±×¸®°í »ç¿ëÀ» ¸¶Ä£ ClientŬ·¡½º°¡ Ä¿³Ø¼ÇÀ» ³Ñ°ÜÁÖ¸é ´Ù½Ã º¸°üÇϰí ÀÖ´Ù°¡, ´Ù¸¥ ClientŬ·¡½º·ÎºÎÅÍ »õ·Î¿î ¿äûÀÌ µé¾î¿À¸é º¸°üÇϰí ÀÖ´ø Ä¿³Ø¼ÇÀ» Àç»ç¿ë ÇÒ ¼ö ÀÖµµ·Ï ClientŬ·¡½º¿¡°Ô ³Ñ°ÜÁÝ´Ï´Ù.
Á¤¸®Çϸé, Connection PoolÀÌ ÇØ¾ß ÇÏ´Â ÀÏÀº ´ÙÀ½°ú °°½À´Ï´Ù.
n Ä¿³Ø¼ÇÀ» »ý¼ºÇؼ º¸°üÇϰí Àִ´Ù
n Ä¿³Ø¼Ç¿¡ ´ëÇÑ ¿äûÀÌ µé¾î¿À¸é, º¸°üÁßÀÎ Ä¿³Ø¼Ç Áß Çϳª¸¦ ³Ñ°ÜÁØ´Ù
n »ç¿ëÀÌ ³¡³ Ä¿³Ø¼ÇÀº ´Ù½Ã º¸°üÇϰí Àִ´Ù
Connection PoolÀÇ ¿ªÇÒÀ» ¼öÇàÇÏ´Â ConnectionPoolÀ̶ó´Â Ŭ·¡½º¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù. ¸ÕÀú ½ÇÁ¦ ConnectionPoolŬ·¡½ºÀÇ ¿Ï¼ºµÈ Äڵ带 º¸°Ú½À´Ï´Ù.
ConnectionPool.java(Connection PoolÀ» »ý¼ºÇÏ´Â ¿¹Á¦) |
import java.sql.*; import java.util.*; public class ConnectionPool { private static ConnectionPool cp = null; private ConnectionFactory1 cf = null; private Vector pool = null; private ConnectionPool() { cf = new ConnectionFactory1(); pool = new Vector(); } public static synchronized ConnectionPool getInstance() { if (cp == null) { cp = new ConnectionPool(); } return cp; } public synchronized Connection getConnection() throws SQLException { Connection conn = null; int size = pool.size(); if (size > 0) { conn = (Connection)(pool.elementAt(0)); pool.removeElementAt(0); }else { conn = cf.getConnection(ConnectionFactory1.ODBC); } return conn; } public synchronized void releaseConnection(Connection conn) { pool.add(conn); } } |
C:\JavaExample\19> javac ConnectionPool.java |
ConnectionPoolŬ·¡½º´Â µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» »ý¼ºÇϱâ À§ÇØ ÀÌÀü¿¡ ¸¸µç ConnectionFactory1Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ ConnectionFactory1Ŭ·¡½ºÀÇ »ç¿ëÀ¸·Î ¿ì¸®°¡ ¸¸µç ConnectionPoolÀº ´Ù¾çÇÑ È¯°æ¿¡ Àû¿ëÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.
n private ConnectionPool cf = null;
n cf = new ConnectionFactory1();
ConnectionFactory1ÀÇ getConnection()¸Þ¼µå¸¦ »ç¿ëÇØ¼ µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀ» ¸¸µé¸é, Ä¿³Ø¼Ç ÀúÀå¼Ò¿¡ º¸°üÀ» ÇÕ´Ï´Ù. Ä¿³Ø¼ÇÀÇ º¸°üÀ» À§Çؼ ConnectionPoolŬ·¡½º´Â poolÀ̶ó´Â Vector ŸÀÔÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù.
n private Vector pool = null;
n pool = new Vector();
À§ µÎ ÀÛ¾÷Àº ConnectionPoolŬ·¡½ºÀÇ »ý¼ºÀÚ¿¡¼ ¼öÇàÀÌ µË´Ï´Ù. ±×·±µ¥ Áö±Ý±îÁö ¿ì¸®°¡ »ç¿ëÇÑ »ý¼ºÀÚ¿Í Á¶±Ý ´Ù¸¥ ºÎºÐÀÌ ÀÖ½À´Ï´Ù. ¹Ù·Î »ý¼ºÀÚÀÇ Á¢±Ù ÁöÁ¤ÀÚ°¡ ¡®private¡¯À̶ó´Â °ÍÀÔ´Ï´Ù.
private Á¢±Ù ÁöÁ¤ÀÚ¸¦ °¡Áö´Â »ý¼ºÀÚ |
private ConnectionPool() { cf = new ConnectionFactory1(); pool = new Vectory(); } |
À̰ÍÀº ¿ÜºÎ¿¡¼ »ý¼ºÀÚ¸¦ ÅëÇØ ConnectionPool°´Ã¼¸¦ »ý¼ºÇÏÁö ¸øÇÏ°Ô Çϰڴٴ ¶æÀÔ´Ï´Ù. ConnectionPool°´Ã¼¸¦ ¸¸µé°í Á¢±ÙÇϱâ À§Çؼ´Â staticÀ¸·Î ¼±¾ðµÈ getInstance()¶ó´Â ¸Þ¼µå¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
n public static synchronized ConnectionPool getInstance()
getInstance()¸Þ¼µå´Â ÇöÀç ¸¸µé¾îÁ® ÀÖ´Â ConnectionPool°´Ã¼°¡ Á¸ÀçÇÏ´ÂÁö ¾Ë¾Æº¸°í, ¸¸¾à Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é »õ·Î ConnectionPool°´Ã¼¸¦ ¸¸µé¾î¼ ¹ÝÈ¯ÇØ ÁÝ´Ï´Ù. ÀÌ¹Ì ConnectionPool°´Ã¼°¡ Á¸ÀçÇÑ´Ù¸é, ±× °´Ã¼ÀÇ ÂüÁ¶ÀÚ¸¦ ³Ñ°Ü ÁÝ´Ï´Ù. ÀÌ·± ±â¹ýÀ» µðÀÚÀÎ ÆÐÅÏ ¿ë¾î·Î ½Ì±ÛÅæ(Singleton) ÆÐÅÏÀ̶ó°í ÇÕ´Ï´Ù. ½Ì±ÛÅæ ÆÐÅÏÀ» »ç¿ëÇÏ¸é ¾î¶² °´Ã¼¸¦ µü Çϳª¸¸ Á¸ÀçÇÏ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ½Ì±ÛÅæ ÆÐÅÏÀ» »ç¿ëÇØ¼ ConnectionPool°´Ã¼¸¦ µü Çϳª¸¸ Á¸ÀçÇÏ°Ô ¸¸µç ÀÌÀ¯´Â µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼Ç °ü¸®ÀÚ°¡ ¿©·¯ °³ÀÌ¸é ¿Ïº®ÇÑ °ü¸®°¡ ¾ÈµÇ±â ¶§¹®ÀÔ´Ï´Ù.
ConnectionPoolŬ·¡½º´Â ClientŬ·¡½ºµéÀÌ Ä¿³Ø¼ÇÀ» ¿äûÇÒ ¼ö ÀÖµµ·Ï getConnection()À̶ó´Â ¸Þ¼µå¸¦ Á¦°øÇÕ´Ï´Ù. getConnection()¸Þ¼µå´Â Ä¿³Ø¼Ç¿¡ ´ëÇÑ ¿äûÀÌ µé¾î¿ÔÀ» ¶§ Ä¿³Ø¼Ç º¸°ü¼ÒÀÎ pool¿¡ »ç¿ëÇϰí ÀÖÁö ¾ÊÀº Ä¿³Ø¼ÇÀÌ ÀÖ´ÂÁö °Ë»ç¸¦ Çϰí, »ç¿ë °¡´ÉÇÑ Ä¿³Ø¼ÇÀÌ ÀÖ´Ù¸é ³Ñ°Ü ÁÝ´Ï´Ù. ¸¸¾à, ¸ðµç Ä¿³Ø¼ÇÀÌ »ç¿ë ÁßÀ̶ó¸é »õ·Î¿î Ä¿³Ø¼ÇÀ» ¸¸µé¾î¼ ³Ñ°Ü ÁÝ´Ï´Ù.
getConnection()¸Þ¼µåÀÇ ³»ºÎ ±¸Çö |
public synchronized Connection getConnection() throws SQLException { Connection conn = null; int size = pool.size(); // pool¿¡ ÀúÀåµÇ¾î ÀÖ´Â Ä¿³Ø¼ÇÀÇ ¼ö if (size > 0) { // »ç¿ë °¡´ÉÇÑ Ä¿³Ø¼ÇÀÌ ÀÖ´Ù¸é, Ä¿³Ø¼ÇÀ» Çϳª ²¨³»¿È conn = (Connection)(pool.elementAt(0)); pool.removeElementAt(0); }else { // »ç¿ë °¡´ÉÇÑ Ä¿³Ø¼ÇÀÌ ¾ø´Ù¸é Ä¿³Ø¼ÇÀ» »õ·Î ¸¸µê conn = cf.getConnection(ConnectionFactory1.ODBC); } // Ä¿³Ø¼ÇÀ» ¹Ýȯ return conn; } |
»ç½Ç »õ·Î¿î Ä¿³Ø¼ÇÀ» ¸¸µå´Â ¹®Á¦´Â Á»´õ °í·ÁÇØ¾ß ÇÒ »çÇ×µéÀÌ Àִµ¥, À̰Ϳ¡ ´ëÇØ¼´Â ´ÙÀ½ Àý¿¡¼ »ìÆìº¸°Ú½À´Ï´Ù.
Ä¿³Ø¼ÇÀ» pool¿¡¼ °¡Á®¿Ã ¶§´Â Á¦ÀÏ ¾Õ¿¡ À§Ä¡Çϰí ÀÖ´Â Ä¿³Ø¼ÇÀ» °¡Á® ¿É´Ï´Ù.
n conn = (Connection)(pool.elementAt(0));
ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â Ä¿³Ø¼ÇÀ» »ç¿ëÇÏÁö ¾Ê°í ¿À·£ ½Ã°£ÀÌ Áö³ª¸é ÀÚµ¿À¸·Î ¿¬°áÀÌ ÇØÁ¦ µÉ ¼öµµ Àֱ⠶§¹®ÀÔ´Ï´Ù. ÀÌ·¸°Ô Á¦ÀÏ ¾Õ¿¡ À§Ä¡ÇÑ Ä¿³Ø¼ÇÀ» ¹ÝÈ¯ÇØÁÖ°í, ¸· »ç¿ëÀÌ ³¡³ Ä¿³Ø¼ÇÀº Á¦ÀÏ µÚ¿¡ ÀúÀåÇÏ´Â ¹æ½ÄÀ¸·Î Ä¿³Ø¼ÇÀ» º¸´Ù ¾ÈÁ¤ÀûÀ¸·Î Àå½Ã°£ °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
»ç¿ëÀ» ¸¶Ä£ Ä¿³Ø¼ÇÀº ClientŬ·¡½º·ÎºÎÅÍ releaseConnection()¸Þ¼µå¸¦ È£Ãâ ¹ÞÀ½À¸·Î½á ³Ñ°Ü¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.
n public synchronized void releaseConnection(Connection conn) {
n pool.add(conn);
n }
ÀÌ ¸Þ¼µå´Â ´Ü¼øÈ÷ ³Ñ°Ü¹ÞÀº Ä¿³Ø¼ÇÀ» poolÀÇ Á¦ÀÏ ³¡¿¡ ÀúÀåÇØ ÁÖ´Â Àϸ¸À» ÇÕ´Ï´Ù.
ConnectionPoolŬ·¡½º¿¡¼ »ç¿ëµÇ´Â ´ëºÎºÐÀÇ ¸Þ¼µåµéÀº ¿©·¯ ClientŬ·¡½ºµéÀÌ µ¿½Ã¿¡ Á¢¼ÓÇÏ´Â °ÍÀ» °í·ÁÇØ¼ synchronized󸮵Ǿî ÀÖ½À´Ï´Ù. ¸ÖƼ ¾²·¹µå¿¡ °üÇÑ ºÎºÐÀº ÀÌ Ã¥ÀÇ ¾Õ ºÎºÐÀ» Âü°íÇØ Áֽñ⠹ٶø´Ï´Ù.
ÀÌÁ¦ ½ÇÁ¦·Î ¸¸µé¾îÁø ConnectionPoolŬ·¡½º¸¦ »ç¿ëÇÏ´Â Client Ŭ·¡½º¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù.
ClientClass2.java(ConnectonPool Ŭ·¡½º¸¦ Àû¿ëÇÏ´Â ¿¹Á¦) |
import java.sql.*; public class ClientClass2 { public static void main(String[] args) throws SQLException { ConnectionPool pool = ConnectionPool.getInstance(); Connection conn = pool.getConnection(); if (conn != null) { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM MyTest"); rs.close(); stmt.close(); pool.releaseConnection(conn); } } } |
C:\JavaExample\19>javac ClientClass2.java C:\JavaExample\19>java ClientClass2 |
ClientŬ·¡½º´Â ConnectionFactoryŬ·¡½º¸¦ »ç¿ëÇÒ ¶§¿Í ¸¶Âù°¡Áö·Î ConnectionPoolŬ·¡½ºÀÇ getConnection()¸Þ¼µå¸¦ È£ÃâÇÒ »ÓÀÔ´Ï´Ù. ´Ù¸¥ Á¡ÀÌ ÀÖ´Ù¸é, ConnectionPool°´Ã¼¸¦ ¾ò¾î¿À´Â ¹æ¹ý°ú »ç¿ëÀÌ ³¡³ Ä¿³Ø¼ÇÀº ConnectionPoolŬ·¡½ºÀÇ releaseConnction()¸Þ¼µå¸¦ »ç¿ëÇØ¼ ´Ù½Ã ¹ÝÈ¯ÇØ Áشٴ °ÍÀÔ´Ï´Ù.
À̹ø Àý¿¡¼ ¸¸µé¾îº» ConnectionPoolŬ·¡½º´Â »ç½Ç, Connection Pooling ±â¹ýÀ» ¼Ò°³Çϱâ À§ÇØ ¾ÆÁÖ °£´ÜÇÑ ±â´É¸¸À» ±¸ÇöÇϵµ·Ï ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù. ½ÇÁ¦ Connection Pooling ±â¹ýÀ» »ç¿ëÇÏ·Á¸é, Connection Pool ¾È¿¡ º¸°üÇÏ·Á´Â µ¥ÀÌÅͺ£À̽º Ä¿³Ø¼ÇÀÇ ÃÖ´ë °³¼ö¿¡ ´ëÇÑ °í·Áµµ ÇÊ¿äÇϰí, ¸¸¾à ÃÖ´ë °³¼ö¿¡ µµ´Þ ÇßÀ» ¶§ ¾î¶»°Ô ó¸®ÇØ ÁÖ¾î¾ß Çϴ°¡¿¡ ´ëÇÑ °í·Áµµ ÇÊ¿äÇÕ´Ï´Ù. ´ÙÀ½ Àý¿¡¼´Â ÀÌ·± ºÎºÐ±îÁö È®ÀåÇÑ ConnectionPoolŬ·¡½º¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù.
¢Ñ Connection Pool |
Ä¿³Ø¼ÇµéÀ» ¸ð¾Æ °ü¸®Çϴ Ŭ·¡½º¸¦ ¸¸µé¾îµÎ°í, DB¿Í ¿¬°áµÇ´Â ¸ðµç Ä¿³Ø¼ÇÀ» »ý¼ºÇÏ°í °ü¸® ÇÏ´Â °Í. |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ ÀúÀÚ:ÃÖ¿µ°ü |