我正在開發與服務器中的MySQL數據庫進行通信的Java應用程序。該應用程序應該能夠讀取XML文件中的一些數據,然後讀取database
中的信息insert
。硬編碼SQL語句VS. Web服務來執行查詢
我曾經直接寫入SQL Statements
到Java代碼,但後來有朋友建議我創建一個web服務,爲該工具做所有SQL
的東西,並讓該工具的唯一工作是讀取XML並將數據發送到Web服務。
我的問題是,這是否值得這個努力?爲什麼或者爲什麼不?
我正在開發與服務器中的MySQL數據庫進行通信的Java應用程序。該應用程序應該能夠讀取XML文件中的一些數據,然後讀取database
中的信息insert
。硬編碼SQL語句VS. Web服務來執行查詢
我曾經直接寫入SQL Statements
到Java代碼,但後來有朋友建議我創建一個web服務,爲該工具做所有SQL
的東西,並讓該工具的唯一工作是讀取XML並將數據發送到Web服務。
我的問題是,這是否值得這個努力?爲什麼或者爲什麼不?
不推薦使用代碼中的SQL,因爲它很難維護。該應用程序也與數據庫結構緊密耦合。每當數據庫發生變化(或者您正在轉向新的數據庫)時,您需要對代碼進行更改並再次發佈。
我不認爲web服務是這裏的正確答案。我會建議您嘗試以下之一:
如果應用程序使用了大量的表和非常高的吞吐量並不重要,使用Hibernate作爲ORM工具。它具有許多功能,可以真正減少在數據訪問上花費的時間。
如果你沒有那麼多的表,而你沒有時間學習Hibernate,那就使用iBatis。這需要30分鐘才能掌握。它基本上允許你把你的SQL放在一個單獨的XML文件中,它將爲你讀取。對於較小的應用程序來說,它非常有用,它比Hibernate更快。
作爲最後的手段,寧願將SQL放入您打開並執行的文本文件中。
你打算如何創建webservice部分?如果你有時間做,值得用Core Java或任何Webservice框架來嘗試,不過我會建議使用Core Java,這有助於保持對你的工具的最小依賴。儘管如此,爲了使XML和Webservice請求同步,還需要付出很多努力。我的承擔 - 如果它沒有損壞,不要修理它。
根據我的經驗,如果一個圖層服務超過3個不同的客戶端,那麼它是值得的。所以如果只有一個網站,我不會添加Web服務層。 – Andomar 2013-02-13 10:09:27
可能但是,這一切都取決於您的應用程序的作用,以及它的用途和相關要求。對這樣一個開放式問題的完整回答需要一本書而不是SO上的一篇文章,即使那樣,答案也只會是主觀上的正確。這使得這個問題無法回答。 – Jodrell 2013-02-13 10:12:05
@Andomar,一個網站可以有3個以上不同的客戶。即使您打算擁有1個客戶端,也可能存在安全性或連接性的原因,以便在Web服務後託管您的數據訪問。 – Jodrell 2013-02-13 10:19:19