2013-08-06 56 views
0

我開發一個應用程序,一個非常簡單的學生資源管理系統(SRMS)EJB 3.1應用程序設計

我應該使用企業Java Bean,一個獨立的Java GUI客戶端,Web瀏覽器客戶端

如果我使用Servlets作爲瀏覽器客戶端,我應該將所有的邏輯放在企業bean中,並且只需調用Servlet中的方法?所以我可以從獨立的GUI應用程序中調用同樣的方法。

令人困惑的是,我不應該在我的Servlets中擁有任何邏輯,我應該在應用程序的bean層中擁有所有邏輯。

還有一件事:Session BeanSession Bean from Entity Classes有什麼區別?

GUI客戶端也將使用登錄,但這是瀏覽器客戶端也將使用的唯一類似操作。瀏覽器客戶端只能搜索和查看一些數據。

回答

3

您可以將您的業務邏輯放入EJB會話bean中,然後使用EJB JPA實體訪問數據庫。如果所有的邏輯都必須駐留在EJB層中,則必須採用這種方式。所以EJB會話bean是您業務邏輯的接口。 JPA實體類映射到RDBM中的表中。

這種方式servlet和獨立的命令行應用程序可以調用在EJB會話bean中定義的方法。會話bean應該返回準備在視圖中顯示的數據傳輸對象(例如,在servlet中不再進行處理)。作爲一個經驗法則,例如,如果用戶點擊「搜索」按鈕,試着限制自己只能調用一個EJB方法。否則,可能會有太多流量,特別是對於命令行應用程序,因爲通常不會在同一主機上運行。所以請注意EJB會話bean接口的設計。

EJB會話bean是受管理的bean(由應用程序服務器控制),並提供聲明式事務/安全性。

EJB實體bean已被棄用,並已被替換爲JPA。

+0

Hej謝謝你,這是一個很好的答案。但是仍然在Nebeans中,您可以選擇創建'Session Bean for Entity Classes',並在關於Java EE 6的Netbeans教程中使用。無視圖會話bean是否意味着它根本不需要接口? –

+0

這可能意味着「EJB會話bean」與「EJB JPA實體」(這是我在第一段中描述過的)。 「EJB JPA實體」取代了「EJB實體bean」:[Wikipedia](http://en.wikipedia.org/wiki/Enterprise_JavaBeans#Entity_beans_.28deprecated.29) – Beryllium

+0

由於某種原因,我嘗試通過正常的會話bean,不起作用。我試圖訪問數據庫來獲取一些用戶,但它不起作用。但它的作品,當我從一個servlet做同樣 –