簡體   English   中英

servlet和資源文件

[英]servlets and resource file

是否可以在屬性文件中編寫數據庫方法,例如某些數據庫查詢,並且可以使用servlet進行訪問,從而減少代碼?

我已經看到DB工作完成了各種方式,從直接將SQL硬編碼到訪問數據庫的每種方法中,到存儲在中央文件中的靜態字符串中的sql,再到存儲在屬性文件中的SQL,最后再到諸如休眠的ORM。 我什至看到SQL存儲在數據庫中!

我絕不建議將SQL(或ORM查詢)存儲在離需要它們的代碼遠的地方。 原因很簡單,我的經驗是通過斷開連接,開發人員開始重用和誤用查詢。 隨着時間的流逝,開發人員會松懈地跟蹤在哪里使用了什么查詢,並開始添加新查詢,以避免發生問題的風險。 最終,他們最終得到了充滿查詢的文件,甚至不知道正在使用哪些文件。 我見過的最糟糕的情況是,開發人員在集中SQL並將其制動為各個部分。 幾乎不可能說出改變是否會破壞事情。

分離查詢的初始參數通常是“維護”或“以防萬一,我們要更改數據庫”,等等。但是最終,這變成了一個比計划要解決的更大的問題。

總而言之,我建議將查詢存儲在盡可能靠近使用它們的代碼的位置。 Hibernate和類似的解決方案使之成為務實的解決方案還有很長的路要走。

  1. webapp可以訪問屬性文件。
  2. 屬性文件可能具有鍵值對,例如query1 =從某處選擇某物

您可以組合1和2以便在webapp中執行sql查詢,但是我不確定它會減少代碼(您仍然必須打開db連接,讀取rs,關閉連接等)。

當然,您可以將查詢放在屬性文件中,但是如果您使用的是JDBC,則代碼在很大程度上取決於這些查詢。 參數的數量及其順序一定不能更改,結果也一樣,因此我看不出這樣做有很多優點。

您可以將查詢存儲在webapp可以訪問的文件中,然后使用准備好的語句執行查詢。 這樣,您的查詢字符串就在一個外部文件中,您在代碼中所做的全部工作就是填寫參數,但是您必須首先從所謂的“屬性文件”中讀取查詢字符串。

例:

String query; // read the query from the "properties file"

//Suppose you put "INSERT INTO BOOKS (AUTHOR, TITLE) VALUES (?, ?);"

PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, "param1");
ps.setString(2, "param2");

ps.executeUpdate();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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