【发布时间】:2015-02-03 13:59:03
【问题描述】:
我将只为我的项目使用单个数据库。仅使用一个数据源(Oracle)是相当固定的。所以我创建了一个 Datasource 类来创建连接。我将方法保持为静态,因为我将只使用一个数据源。
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 数据库。我该怎么做呢?当我从开发切换到生产时,我想进行最小的更改。
【问题讨论】:
-
适合您的应用的设计就是好的设计。
标签: java jdbc data-access-layer