簡體   English   中英

Java中的數據庫連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM