8.12 Factory Ȱ¿ë
¾Õ¿¡¼ ¼³¸íÇÑ Factory Ŭ·¡½ºÀÇ ½ÇÁ¦ ¿¹¸¦ »ìÆì º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ¾Æ·¡ÀÇ ¿¹Á¦´Â µ¥ÀÌÅͺ£À̽º ¿¬°á ½Ã ODBC¸¦ »ç¿ëÇϸé 1À», Oracle¸¦ »ç¿ëÇϸé 2¸¦, MSSQL 2000¿ë µå¶óÀ̹ö¸¦ »ç¿ëÇϸé 3À̶ó´Â °ªÀ» °¡Áö°Ô µË´Ï´Ù. ÀÌ °ªÀ¸·Î µ¥ÀÌÅͺ£À̽ºÀÇ Á¾·ù¸¦ ±¸º°Çϰí ÀÖ½À´Ï´Ù.
Factory¿¡¼ µ¥ÀÌÅͺ£À̽º ±¸º° »ó¼ö
n public static final int ODBC = 1;
n public static final int ORACLE = 2;
n public static final int MSSQL=3;
¿ì¸®°¡ »ç¿ëÇÒ °ÍÀº MSSQLÀ̹ǷΠConnectionFactory.MSSQL »ó¼ö¸¦ »ç¿ëÇϰڽÀ´Ï´Ù. ±×·³ ¿¹Á¦¸¦ »ìÆì º¸°Ú½À´Ï´Ù.
|
FactoryTest.jsp |
Factory Ŭ·¡½º¸¦ Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦ |
|
<%@ page import = "java.sql.*, org.jabook.sql.*" contentType= "text/html;charset = euc-kr"%>
<html>
<body>
<h3>ConnectionFactory Class Test</h3>
<%
Connection conn = new ConnectionFactory().getConnection(ConnectionFactory.MSSQL);
PreparedStatement pstmt = conn.prepareStatement("Insert into MyTest values (?,?)");
pstmt.setString(1, "www.jabook.org");
pstmt.setInt(2, 3);
pstmt.execute();
Statement stmt = conn.createStatement();
String sql = "Select * from MyTest ";
ResultSet rs = stmt.executeQuery(sql);
%>
MyTest Å×ÀÌºí¿¡¼ ResultSet °¡Á®¿À±â<br>
<table border = "1" cellspacing="0" cellpadding="1">
<tr bgcolor = "pink">
<td><b>name</b></td>
<td><b>age</b></td>
</tr>
<%
while(rs.next()){
%> <tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getInt(2)%></td>
</tr>
<%
}
rs.close();
stmt.close();
conn.close();
%>
</table>
</body>
</html>
|
|
ConnectionFactory.java |
Factory Ŭ·¡½º |
|
package org.jabook.sql; import java.sql.*;
public class ConnectionFactory {
public static final int ODBC = 1; public static final int ORACLE = 2; public static final int MSSQL=3; public ConnectionFactory() {}
public Connection getConnection(int dbms) throws SQLException { Connection conn = null; if (dbms == ConnectionFactory.ODBC) { try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:dbdsn", "id", "password"); }catch (ClassNotFoundException cnfe) { System.out.println(cnfe); } } else if (dbms == ConnectionFactory.ORACLE) { try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@ip_address:port:ORACLE","id", "password"); }catch (ClassNotFoundException cnfe) { System.out.println(cnfe); } } else if (dbms == ConnectionFactory.MSSQL) { try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); conn= DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433","novel","jsp"); }catch (ClassNotFoundException cnfe) { System.out.println(cnfe); } } return conn; } }
|
|
C:\jakarta\webapps\MySample\WEB-INF\classes>javac –d . ConnectionFactory.java

|
¿¹Á¦¿¡¼ Connection °´Ã¼ connÀ» ¾ò¾î¿À±â À§Çؼ ConnectionFactory Ŭ·¡½ºÀÇ getConnection ¸Þ¼µå¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù.
n Connection conn =
new ConnectionFactory().getConnection(ConnectionFactory.MSSQL);
getConnection ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§ »ç¿ëÇÒ µ¥ÀÌÅͺ£À̽ºÀÇ °ªÀ» ¸Å°³º¯¼ö·Î ³Ö¾î ÁÖ¾ú½À´Ï´Ù. ConnectionFactory.MSSQL »ó¼ö¸¦ ³Ö¾î ÁÖ¾î, ÀÌ °ªÀ» ºñ±³ÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ±¸º°ÇÏ°Ô µË´Ï´Ù. ConnectionFactory.MSSQL »ó¼ö·Î ±¸º°µÈ µ¥ÀÌÅͺ£À̽º¿¡ ¸Â´Â Class¸¦ ·ÎµùÇϰí, Connection °´Ã¼¸¦ ¾ò°Ô µË´Ï´Ù.
n if (dbms == ConnectionFactory.MSSQL) {
n try {
n Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
n conn= DriverManager.getConnection
("jdbc:microsoft:sqlserver://localhost:1433","novel","jsp");
n }catch (ClassNotFoundException cnfe) {System.out.println(cnfe); }
n }
±×¸®°í »ý¼ºµÈ Connection °´Ã¼¸¦ FactoryTest.jsp¿¡ ³Ñ°ÜÁÖ°Ô µË´Ï´Ù.
n return conn;
JSP ÆäÀÌÁö´Â ³Ñ°Ü¹ÞÀº Connection °´Ã¼¸¦ »ç¿ëÇÏ¿© ÀÛ¾÷À» ³¡¸¶Ä¡°í, JSP ÆäÀÌÁö ³»¿¡ Connection °´Ã¼¸¦ Á¾·áÇÏ°Ô µË´Ï´Ù. Å©°Ô ¾î·ÆÁö´Â ¾ÊÀ¸¸®¶ó »ý°¢Çϸç Factory Ŭ·¡½º¿Í °°ÀÌ JDBC¿¡¼ ÀÚÁÖ »ç¿ëµÇ´Â Pooling ±â¹ý¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ
|
Á¦¸ñ:¼Ò¼³°°ÀºJSP2ºÎ
ÀúÀÚ:ÃÖ¿µ°ü
|