[英]Database access class best practices
我使用JDBC驅動程序為我的postgre數據庫創建了一個簡單的DBHelper。
我想知道最佳做法是什么?
例如, initConnection() closeConnection()
或其他方法是否應該是靜態的? 喜歡:
void foo{
DBHelper.initConnection();
// do some logic, maybe:
// Data someData = DBHelper.getSomeData();
DBHelper.closeConnection();
}
也許更好,如果我將創建一個DBHelper對象並為該對象調用方法。 喜歡:
void foo2{
DBHelper dbhelper = new DBHelper();
dbhelper.initConnection();
// do some logic, maybe:
// Data someData = dbhelper.getSomeData();
dbhelper.closeConnection();
}
有關系嗎?
在嘗試檢索某些數據之前,是否需要始終檢查連接是否打開? 如果很近怎么辦? 並始終嘗試在finally
塊中將其關閉?
編輯:回答@Kayaman評論:
那么我的foo方法是這樣的嗎?
void foo3{
Connection conn = DBHelper.getConnection();
// do some logic, maybe:
// Statement statement = conn.createStatement();
// some stmt work
conn.close() //do i need check if stmt is closed before?
}
這將使我的DBHelper類僅對獲得連接有用。 里面沒有邏輯嗎? (例如GetInterestingRecords()
或GetRecordsWithId(30)
嗎?
您是否考慮過在服務器配置文件(如果是Web應用程序)中定義連接屬性,並且在整個應用程序生命周期中都打開了會話?
在實現DBHelper之前,您應該檢查一些Java庫是否可以滿足您的需求。 如果你看看這個有列出了一些庫,似乎適合您的問題。
如果您決定繼續使用自己的自定義實現,建議將DBHelper設置為普通類,而沒有用於管理連接的靜態方法。 主要原因是使用靜態方法無法同時管理多個(即與不同數據庫的連接)數據庫連接。 如果您在onw庫中使用Java 7實現,則還可以實現AutoClosable
,以便更好地管理庫所管理的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.