我正在構建一個允許用戶構建ETL代碼的數據工具。在深入研究這些內容之前,我需要構建一個「代理」來處理該工具需要執行的所有與數據庫相關的工作。具體而言,這將涉及 -關於java類設計的指導
- 選擇,插入,更新和刪除
- 多個記錄
- 自/至/在不同的表有不同的佈局
我的想法是建立一個類使用以下4種方法 -
ArrayList[][] selectFromRepository (String dbTable, String[] columnNames)
ArrayList[][] selectFromRepository (String dbTable, String[] columnNames, Map<String, Object> predicate)
void insertToRepository (String dbTable, Map<String, Object>[] payload)
void updateInRepository (String dbTable, Map<String, Object>[] payload, Map<String,Object>[] predicate)
void deleteFromRepository (String dbTable, Map<String, Object>[] payload)
selectFromRepository將使用2D a基於從參數「dbTable」中檢索的「columnNames」中的元素類型,異構元素的內容列表。重載版本允許通過「謂詞」映射指定where子句謂詞。我想我可以檢查傳遞給方法Map對象元素的類型和建立正確的where子句(例如對於
"where " + key + " = '" + predicate.get(k) + "'" if predicate.get(k) instanceOf String
等..
其他方法將更新方法類似工作謂詞的工作方式類似於超載選擇。
我在尋找最佳實踐的指導,我的想法的缺點(因此你的方法的優點是你的方式:))。另外,建立一個名爲DB元素的通用類型是否有意義,它接受所有已知的DB數據類型,我期望將其用作類型輸入,然後在map/arraylist參數中使用它而不是「Object」類型?
在此先感謝!
有JDBC,它實現了你正在尋找的大部分功能。 – 2014-09-10 15:26:42