[英]Database Connectivity in java
首先,我向您展示代碼,然后問了幾個問題。 我有這樣的類數據庫連接(請忽略語法錯誤(如果有))
class DatabaseConnection {
private static Connection connection = null;
private static String driverName="";
private static String userName="";
private static String passwrod="";
private static String url="";
private DatabaseConnection() { }
public static void createConnection() {
if ( connection == null ) {
// read database credentials from xml file and set values of driverName, userName, passowrd and url
//create connection with database and set store this connection in connection object created a class level.
}
}
public static void closeConnection1() throws Exception{
if ( connection != null ) {
connection.close();
connection == null
}
}
public static void closeConnection2() throws Exception{
if ( connection != null ) {
connection.close();
}
}
public void insertData(Object data) {
// insetData in database
}
}
我想知道哪個緊密連接在數據庫連接中更優化。 假設我有這樣的測試班
class Test {
public static void main(String args[]) {
DatabaseConnection.createConnection();
DatabaseConnection.insertData(data);
DatabaseConnection.closeConnection2(); // we call also called close connection method within the insertData method after inserting the data
}
}
創建數據庫連接后,我將數據插入數據庫,然后使用closeConnection2方法關閉連接。 以這種方式,連接已經關閉,因此,如果我想插入其他方法,則必須重新創建與數據庫的連接,但是由於連接對象不為null且createConnection不在if語句中執行代碼,因此無法執行此操作。 現在,如果我調用了closeConnection1方法來關閉連接,那么在執行此操作時,我必須再次解析xml文件以獲得憑據,這不是一個優化的解決方案。 您能告訴我哪種方法好,如果兩種方法都差,請告訴我更有效的創建和關閉數據庫連接的方法。
我看到了兩個主要問題:
Connection
對象)都是靜態的事實意味着您永遠無法一次從多個線程使用此類。 僅第二件事就可以避免必須多次分析連接信息。
更好的方法是使用DataSource
而不是每次都打開連接。 然后使用實際上是連接池的DataSource
!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.