[Áöµð³ÝÄÚ¸®¾Æ]¼ºí·¿¿¡¼ instance variableÀÇ °øÀ¯ -DataBase Connection-
public class TestServlet extends HttpServlet {
private final static String drv = "oracle.jdbc.driver.OracleDriver";
private final static String url = "jdbc:orache:thin@210.220.251.96:1521:ORA8i";
private final static String user = "scott";
private final static String password = "tiger";
private ServletContext context;
private Connection conn = null; <--- !!!
private Statement stmt = null; <------ !!!
private ResultSet rs = null; <------ !!!
public void init(ServletConfig config) throws ServletException {
super.init(config);
context = config.getServletContext();
try {
Class.forName(drv);
}
catch (ClassNotFoundException e) {
throw new ServletException("Unable to load JDBC driver:"+ e.toString());
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException, SQLException
{
String id = req.getParameter("id");
conn = DriverManager.getConnection(url,user,password); ---- (1)
stmt = conn.createStatement(); ---------- (2)
rs = stmt.executeQuery("select .... where id = '" + id + "'"); ----- (3)
while(rs.next()) { ----------- (4)
...... --------- (5)
}
rs.close(); -------- (6)
stmt.close(); ---- (7)
conn.close(); --- (8)
.....
}
}
À§¿¡¼ À߸øµÈ °Í Áß Çϳª°¡ java.sql.Connection°ú java.sql.Statment, java.sql.ResultSetÀ» instance variable·Î »ç¿ëÇϰí ÀÖ´Ù´Â °ÍÀÌ´Ù.
ÀÌ ¼ºí·¿Àº »ç¿ëÀÚ°¡ È¥ÀÚÀÏ °æ¿ì¿£ ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. ÇÏÁö¸¸ ¿©·¯»ç¶÷ÀÌ µ¿½Ã¿¡ ÀÌ ¼ºí·¿À» È£ÃâÇϸé ÀÌ»óÇÑ Áõ»óÀÌ ³ªÅ¸³´Ù. ±× ÀÌÀ¯´Â conn, stmt, rs µî°ú °°Àº referenceµéÀ» instance º¯¼ö·Î ¼±¾ðÇ߱⠶§¹®ÀÌ´Ù. ¼ºí·¿Àº Thread·Î µ¿ÀÛÇϸç À§Ã³·³ instance º¯¼ö ¿µ¿ª¿¡ ¼±¾ðÇØ µÐ referenceµéÀº doGet(), doPost() ¸¦ ¼öÇàÇÏ¸é¼ °¢°¢ÀÇ ¿äûµéÀÌ µ¿½Ã¿¡ °øÀ¯ÇÏ°Ô µÈ´Ù.
¿¹¸¦ µé¾î µÎ °³ÀÇ ¿äûÀÌ ¾à°£ÀÇ ½Ã°£Â÷¸¦ µÎ°í ºñ½ÁÇÑ ¼ø°£¿¡ doGet() ¾ÈÀ¸·Î µé¾î¿Ô´Ù°í °¡Á¤ÇØ º¸ÀÚ. A¶ó´Â ¿äûÀÌ ¼øÂ÷ÀûÀ¸·Î (1), (2), (3)±îÁö ¼öÇàÇßÀ» ¶§, B¶ó´Â ¿äûÀÌ °ð¹Ù·Î doGet() ¾ÈÀ¸·Î µé¾î¿Ã ¼ö ÀÖ´Ù. B ¿ª½Ã (1), (2), (3)À» ¼öÇàÇÑ´Ù.
ÀÌÁ¦ ¿äû A ´Â (4) ¹ø°ú (5) ¹øÀ» ¼öÇàÇÏ·Á Çϴµ¥, °¡¸¸È÷ »ý°¢ÇØ º¸¸é, ¿äûB ·Î ÀÎÇØ ¿äûA¿¡ ÀÇÇØ ÇÒ´çµÆ´ø conn, stmt, rsÀÇ reference µéÀº º¯°æµÈ´Ù. °á±¹ ¿äû A´Â ¿äû BÀÇ °á°ú¸¦ °¡Áö°í ÀÛ¾÷À» ÇÏ°Ô µÈ´Ù. ¹Ý¸é ¿äû B´Â ¿äû A¿¡ ÀÇÇØ rs.next() ¸¦ ÀÌ¹Ì ¼öÇàÇ߱⠶§¹®¿¡ rs.next() ÀÇ °á°ú°¡ ÀÌ¹Ì closeµÆ´Ù´Â ¾û¶×ÇÑ °á°ú°¡ »ý±ä´Ù.
´Ù¸¥ ½¬¿î ¾ê±â·Î ¼³¸íÇØ º¸¸é, A, B µÎ»ç¶÷ÀÌ ½ÄŹ¿¡ ¾É¾Æ¼ °¢ÀÚ ÀÚ½ÅÀÌ ÁغñÇØ ¿Â »ç°ú¸¦ Çϳª¾¿ ±ð¾Æ ½ÄŹ À§ÀÇ Á¢½Ã¿¡ ¿Ã·Á ³õ°í ³ªÁß¿¡ ¸ÔÀ¸·Á ÇÏ´Â °Í°ú µ¿ÀÏÇÏ´Ù. A¶ó´Â »ç¶÷ÀÌ ¿½ÉÈ÷ »ç°ú¸¦ ±ð¾Æ Á¢½Ã¿¡ ´ã¾ÆµÑ ¶§, B¶ó´Â »ç¶÷ÀÌ µé¾î¿Í¼ A°¡ ±ð¾ÆµÐ »ç°ú¸¦ ¹ö¸®°í ÀÚ½ÅÀÌ ±ðÀº »ç°ú¸¦ ´ë½Å Á¢½Ã¿¡ ´ã¾Æ µÐ´Ù.
ÀÌÁ¦ A¶ó´Â »ç¶÷Àº ÀÚ½ÅÀÌ ±ð¾Æ¼ ´ã¾Æ µÐ °ÍÀ̶ó°í »ý°¢ÇÏ´Â »ç°ú¸¦ Á¢½Ã¿¡¼ ¸Ô´Â´Ù. °ðÀ̾î B¶ó´Â »ç¶÷ÀÌ ÀÚ½ÅÀÇ »ç°ú¸¦ Á¢½Ã¿¡¼ ¸Ô¾î·Á ÇÏ´Ï ÀÌ¹Ì A°¡ ¸Ô°í ³ ÈÄÀÌ´Ù. ÀÌ´Â µÎ »ç¶÷ÀÌ Á¢½Ã¸¦ °øÀ¯Ç߱⠶§¹®¿¡ ¹ß»ýÇÏ´Â ¹®Á¦ÀÌ´Ù. ¸¶Âù°¡Áö·Î ¼ºí·¿ÀÇ °¢ Thread´Â instance variable¸¦ °øÀ¯Çϱ⠶§¹®¿¡ µ¿ÀÏÇÑ ¹®Á¦µéÀ» ¹ß»ýÇÏ°Ô µÈ´Ù.
µû¶ó¼ À§ÀÇ ³»¿ëÀº ÃÖ¼ÒÇÑ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤µÅ¾ß ÇÑ´Ù.
public class TestServlet extends HttpServlet {
private final static String drv = "...";
private final static String url = "....";
private final static String user = "...";
private final static String password = "...";
private ServletContext context;
public void init(ServletConfig config) throws ServletException {
super.init(config);
context = config.getServletContext();
try {
Class.forName(drv);
}
catch (ClassNotFoundException e) {
throw new ServletException("Unable to load JDBC driver:"+ e.toString());
}
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException, SQLException
{
Connection conn = null; <----- À̰÷À¸·Î ¿Í¾ßÁÒ..
Statement stmt = null; <-------
ResultSet rs = null; <---------
String id = req.getParameter("id");
conn = DriverManager.getConnection(url,user,password);
stmt = conn.createStatement();
rs = stmt.executeQuery("select ..... where id = '" + id + "'");
while(rs.next()) {
......
}
rs.close();
stmt.close();
conn.close();
.....
}
}
JSP¿¡¼ ¾Æ·¡Ã³·³ »ç¿ëÇÏ´Â °æ¿ì°¡ À§ÀÇ °æ¿ì¿Í µ¿ÀÏÇÑ instance º¯¼ö¸¦ °øÀ¯ÇÏ´Â °æ¿ìÀÌ´Ù.
<%@ page session=.... import=.... contentType=........ %>
<%!
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String userid = null;
%>
<html><head></head><body>
<%
........
conn = ...
stmt = .....
uesrid = ......
%>
</body></html>
¸¶Âù°¡Áö·Î À§Çèõ¸¸ÇÑ ÀÏÀ̸ç, ¿©·¯ Thread¿¡ ÀÇÇØ °ªÀÌ º¯ÇÒ ¼ö ÀÖ´Â º¯¼öµéÀº <%! ... %>¸¦ ÀÌ¿ëÇØ ¼±¾ðÇÏ¸é ¾ÈµÈ´Ù. ÀÌó·³ instance º¯¼ö·Î »ç¿ëÇÒ °ÍÀº ´ÙÀ½°ú °°ÀÌ ±× °ªÀÌ º¯ÇÏÁö ¾Ê´Â °ªÀ̰ųª °øÀ¯º¯¼ö¿¡ ´ëÇÑ Æ¯º°È÷ °ü¸®ÇÑ »óÅ¿¡¼ ÇØ¾ß ÇÑ´Ù.
<%! private static final String USERID = "scott";
private static final String PASSWORD = "tiger";
%>
JSP¿¡¼ÀÇ ÀÌ¿Í °°Àº À߸øµÈ À¯Çüµµ, ¾Õ¼± ¼ºí·¿ÀÇ °æ¿ìó·³ ÀϺΠ±¹³» JSP°ü·Ã ¼Àû¿¡¼ ¹ß°ßµÈ´Ù. ÇØ´ç ¼ÀûÀÇ ÀúÀÚ´Â °¡´ÉÇÑ »¡¸® °³Á¤ÆÇÀ» ÅëÇØ ½ÃÁ¤ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÇØ´ç Ã¥Àº ÃâÆÇ»ç, Ã¥ÀÇ À¯Çü, ±ÛÀÚü·Î ÃßÁ¤°Çµ¥ Ãʺ¸ÀÚ°¡ ½±°Ô ¼±ÅÃÇÒ ¹ýÇÑ Ã¥ÀÎ ¸¸Å ±× ÆÄ±Þ·Â°ú ¿µÇâ·ÂÀÌ ³Ê¹« Å©´Ù.
ÀÌ¿Í °°Àº ºÎºÐÀÌ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼ Á¸ÀçÇÏ¸é ´ëºÎºÐ ½Ã½ºÅÛ ¿ÀÇ ù³¯ Âë¿¡ ¹®Á¦¸¦ ÀνÄÇÏ°Ô µÈ´Ù. Connection reference°¡ ¾þ¾îÃÄÁö¹Ç·Î Pool¿¡ ¹ÝȯÀÌ ÀϾÁö ¾Ê°Ô µÇ°í, ÀÌ´Â "connection pool"ÀÇ °¡¿ëÇÑ ÀÚ¿øÀÌ ºÎÇϰ¡ ¾ó¸¶ ¾øÀ½¿¡µµ ºÒ±¸ÇÏ°í ¸ðÀÚ¶ó´Â Çö»óÀ¸·Î ³ªÅ¸³ª¸ç, ¶§·Ð »ç¿ëÀÚÀÇ È¸é¿¡¼´Â ¾û¶×ÇÑ ´Ù¸¥ »ç¶÷ÀÇ µ¥ÀÌŸ°¡ ³ªÅ¸³ª°Å³ª, SQLException ÀÌ ³ªÅ¸³´Ù. @
href="http://www.zdnet.co.kr/develop/coding/java/article.jsp?id=48132&forum=0">¼ºí·¿ + JDBC ¿¬µ¿½Ã ÄÚµù °í·Á»çÇ× ¨ç