2016-01-11 43 views
2

我正在開發公共使用的Java Swing應用程序。這個程序需要連接一個mysql數據庫。我應該直接從Java Swing應用程序連接到數據庫嗎?公共Java Swing應用程序連接到數據庫

+2

一般慣例會建議您有一個「管理員」API來處理這些類型的事情,它控制您可以做什麼以及如何創建表示數據的對象。物理連接到數據庫的方式取決於數據庫的存儲位置。如果它位於不同的服務器上,則Web界面/寧靜的API可能更合適(更不用說更靈活了) – MadProgrammer

+0

謝謝您的回答。我也想過一個Web界面。但是,這不會不必要地拖慢事情,因爲我現在必須通過我們的界面進行連接,通過其他方法調用例如webservices,服務器端的進程代碼? – Jason

+2

它會增加開銷,但是它增加了一層安全性,因爲您限制了人們可以通過Web服務執行的操作,並限制了可以主動連接到數據庫的域(僅限來自Web的傳入連接服務器本身)和解耦代碼,所以你的客戶端不關心使用了哪個數據庫,只是Web服務維護它的API合約 – MadProgrammer

回答

2

這取決於你有多信任你的客戶。將您的整個數據庫暴露給外部網絡可能會有風險,因爲惡意用戶可以輕鬆地對您的程序進行逆向工程,以找出連接到您的數據庫的憑證。儘管通過將安全性推向數據庫,您可以在某種程度上抵禦與此相關的風險,但使用通用編程語言(如Java)編寫的適當服務層將更適合於此。通過適當的服務API訪問數據庫,可以爲數據庫中的數據一致性提供更高的保證。之後,甚至可以在數據庫供應商之間切換,甚至切換到另一種存儲方法(如NoSQL解決方案),同時保持Swing客戶端幾乎不變(由於設計良好的服務API)。從長遠來看,這絕對是值得的。

編輯:跟進如何實現這樣的Web服務

如果你希望儘量減少外部依賴的回答,您可以與Java標準完全基於一個解決方案,像JAX-WS去。它是作爲JavaEE平臺的一部分提供的,因此雖然不是絕對必要的,但使用兼容的實現可能是一個好主意,因爲它提供了諸如聲明性事務,身份驗證和授權等服務,以及您在實現時可能需要的更多內容暴露您的服務API。 Spring Framework是JavaEE的流行替代品,如果您想要對後端服務層進行全面控制,但它可能需要更多的前期投資以獲取學習曲線。您可以連接到Java SE應用程序的JAX-WS服務或Spring Remoting,因此兩者都可以成爲實現正確的3-tiered architecture的可行途徑。

+0

謝謝。我不是專家程序員,所以請原諒我的愚蠢評論。 =) 因此,對於Java Swing應用程序,我應該如何在Java中開發Web服務層? – Jason

+0

我已經編輯了我的答案,以跟進您的問題。完美的問題,順便說一句。 :) –

+0

謝謝你的回答。我可以知道是否有任何主機可以運行我的服務器端Java代碼? – Jason

相關問題