我將僅爲我的項目使用單個數據庫。只使用一個數據源(Oracle)是相當固定的。所以我創建了一個Datasource類來創建連接。我將這些方法保持爲靜態,因爲我將只使用一個數據源。爲單個數據源實現DAO
public class DataSource {
static Logger log = Logger.getLogger(DataSource.class);
static String connectionURL;
static String userName;
static String password;
static {
log.debug("Creating ConnectionURL");
Connection conn;
Properties properties = new Properties();
try {
FileInputStream in = new FileInputStream(getCodesignRoot() + "/DBConnection/config.properties");
properties.load(in);
} catch (FileNotFoundException ex) {
log.error("config.properties file not found", ex);
log.info("SHUTTING DOWN APPLICATION");
System.exit(-1);
} catch (IOException ex) {
log.error("Can't load the config.properties file", ex);
log.info("SHUTTING DOWN APPLICATION");
System.exit(-1);
}
String databaseServer = properties.getProperty("jdbc.databaseServer");
String listenerPort = properties.getProperty("jdbc.listenerPort");
String oracleSID = properties.getProperty("jdbc.oracleSID");
userName = properties.getProperty("jdbc.userName");
password = properties.getProperty("jdbc.userPassword");
connectionURL
= "jdbc:oracle:thin:@//" + databaseServer + ":" + listenerPort
+ "/" + oracleSID;
}
最重要的是,我將連接方法設爲靜態。
public static Connection getConnection() throws SQLException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException ex) {
log.error("Driver Not Found", ex);
throw new SQLException("Driver Not Found");
}
return DriverManager.getConnection(connectionURL, userName, password);
}
這是一個很好的設計嗎?我應該在哪裏保持我的getConnection方法?它可以是靜態的,因爲我將只使用一個數據源?
我忘了添加一個部分。如果我必須使用兩個數據庫。一個用於開發,另一個用於生產,都是oracle數據庫。我應該怎麼做?當我從開發切換到生產時,我想做最小的改變。
適合您的應用的設計是一個很好的設計。 – 2014-12-05 11:52:35