[JAVA]入門 JDBC 連線模板設定
在目前的專案Web設計上來說,可以分為
Web / Action / Facade / Service / Dao
這幾層 JDBC 是在 Dao 之下,由頁面上的操作決定使用哪一個
Action,由Action 決定使用哪個Facade,然後再由Facade去呼
叫哪一個Service,由Service 去做一些與DB交換資料的動作。
而DB的交換資料看是使用各種FrameWork或使傳統的JDBC,
這邊僅就JDBC去做說明,直接看Code就可明白。
import java.sql.Connection;
import java.sql.DriverManager;
import org.apache.log4j.Logger;
/**
*
* @author Hsu
*/
public class TestDbUtil {
private static final Logger logger = Logger.getLogger(TestDbUtil.class);
//對應DB環境代碼
public final int DB1=1;
public final int DB2=2;
public final int DB3=3;
public final int DB4=4;
//是否為測試階段
//可將其寫在properties 中取出
public final boolean SIT = true;
//資料庫連線資料
//可將其寫在properties 中取出
private final String DB1_CONNECTION_STRING = "jdbc:oracle:thin:@10.1.1.1:1521:TEST";
private final String DB1_ACCOUNT = "user";
private final String DB1_PASSWORD = "password";
/**
* 依照傳入代號選擇DB 連線階段
* @param db
* @return
* @throws Exception
*/
public Connection getConnection(int db) throws Exception{
Connection conn=null;
String connStr = null;
String connId=null;
String connPwd=null;
if (SIT){
logger.debug("SIT狀態!!");
switch(db){
case DB1:
connStr=DB1_CONNECTION_STRING;
connId=DB1_ACCOUNT;
connPwd=DB1_PASSWORD;
logger.debug("使用DB1連線資料");
break;
case DB2:
connStr="";
connId="";
connPwd="";
logger.debug("使用DB2連線資料");
break;
case DB3:
connStr="";
connId="";
connPwd="";
logger.debug("使用DB3連線資料");
break;
case DB4:
connStr="";
connId="";
connPwd="";
logger.debug("使用DB4連線資料");
break;
}
}else{
logger.debug("非SIT狀態!!");
switch(db){
case DB1:
connStr=DB1_CONNECTION_STRING;
connId=DB1_ACCOUNT;
connPwd=DB1_PASSWORD;
logger.debug("使用DB1連線資料");
break;
case DB2:
connStr="";
connId="";
connPwd="";
logger.debug("使用DB2連線資料");
break;
case DB3:
connStr="";
connId="";
connPwd="";
logger.debug("使用DB3連線資料");
break;
case DB4:
connStr="";
connId="";
connPwd="";
logger.debug("使用DB4連線資料");
break;
}
}
try {
/*
* 此處可設定為支援各種不同DB連線
* 亦可寫在 properties 並使用
File PROPERTY_FILE = new File("properties/XXX.properties");
InputStream is= new FileInputStream(PROPERTY_FILE);
Properties prop = new Properties();
prop.load(is);
HOME_DIRECTORY = prop.getProperty("HOME_DIRECTORY");
來取出 各式資料
*/
Class.forName("oracle.jdbc.driver.OracleDriver");
logger.debug("啟用XXX資料庫連線");
conn = DriverManager.getConnection(connStr, connId, connPwd);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
上面這一段程式碼就可以用在Dao端,產生各種不同的DB連線設定,
DB的連線設定可以存在properties中,不用因為改了連線設定就改
Code,當然getConnection也可以寫成static,可供直接呼叫,但為此
就會犧牲了程式上的靈活性,若您的DB連線很單純(如只有一個連線
環境),那設定成static後會方便許多。
原文網址:http://kuoshenghsu.blogspot.tw/2014/11/java-jdbc.html