2013-05-14 21 views
2

我有一個關於如何連接需要從數據庫讀寫的桌面Java應用程序的設計問題。這兩種方法哪一種更好?將桌面應用程序與應用程序服務器和數據庫連接

  1. 通過網絡使用JDBC驅動程序將桌面Java應用程序直接連接到數據庫。這是一個非常糟糕的主意,因爲如果安全但直接編寫SQL查詢並執行它們將非常容易。

  2. 將Java Desktop應用程序連接到將連接到數據庫的應用程序服務器。在這種情況下,我將如何執行SQL查詢?我需要某種隧道來傳輸查詢並返回輸出。這種方法非常安全,但響應時間會很長。

你能告訴我有沒有其他解決方案?

回答

3

最好的選擇是使用EJB服務器。

使用所有crud方法(保存,刪除,更新等)創建一個EJB接口。

在服務器(Jboss/GlassFish)上創建EJB實現。

服務器啓動並運行後,只需將接口Jar文件複製到您的應用程序(Java Swing應用程序)並使用JNDI即可調用所有的crud操作。

〜我希望有幫助。

+0

我同意。在某些情況下,這可能有點過大,但通常這也是一個不錯的選擇。 – desperateCoder 2013-05-14 10:16:13

+0

是的,我同意你@desperateCoder但它相當強大的解決方案。 – Makky 2013-05-14 10:51:21

+0

你好Makky,我也是真的在這個話題中碰到過。我看到你說的是:「一旦服務器啓動並運行,只需將Interface Jar文件複製到應用程序(Java Swing App)並使用JNDI,就可以調用所有的crud操作。」但我也感到困惑,例如,如果我的應用程序客戶機正在另一臺機器上運行,並且運行了EJB實現的Application Server,它們如何通信?如果它們處於同一個項目結構中,那麼我們可以輕鬆地複製界面jar文件,但是如果它們處於不同的環境中,該怎麼辦? – Sonn 2017-05-15 08:50:35

1

另一種選擇是通過所有CRUD操作在應用程序服務器上託管Web服務。這使得它在客戶端實現意義上更具可移植性。

1

我完全同意,公共數據庫被黑客攻擊!但爲什麼它必須是應用程序服務器?你的應用程序的輕量級服務器組件也可以訣竅?你甚至可以通過網絡發送對象(ObjectOutputStream)

我已經做了同樣的事情,因爲我描述,工作可怕的罰款,並且超級簡單,因爲我使用反射與泛型結合執行正確的查詢。

2

有很多方法可以解決這個問題。如果不知道更多關於應用程序及其要求的信息,則不可能推薦一個。

想到的方法是例如EJB,SOAP,REST,JDBC/JPA/Hibernate,RMI。

1

您的應用程序服務器正在公開可爲您提供Connection對象的DataSources(更多信息:http://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html)。你的應用程序和數據庫之間的連接將是直接的,所以對性能沒有影響。

+0

請問您,請給我更多的信息,我可以如何使用準備好的語句來做到這一點? – 2013-05-19 10:37:35

1

執行SQL查詢的責任應僅限於應用程序服務器。所有的情報應該被傳送到應用服務器。

如前面的回答了這個描述可以通過使用EJBweb services做(表演應該是一個低一點,但這種方式,你可以與任何其他系統交互,甚至Web客戶端)和RMI

請考慮由Spring給出的解決方案。

相關問題