當我在這裏說「EJB」時,我的意思是EJB 3.x!EJB是包,類還是方法級機制
我是EJB新手,想知道如何最好地將我所有的業務邏輯映射到不同的bean。在某種極端情況下,您可以KISS並擁有一個單一的EJB,它擁有可處理您應用業務邏輯100%的bazillion方法。在另一個極端,你可以分割你的業務邏輯到函數級(List<User> getUsersFromMars()
),並有一個由1包,1級和1種方法的每一個bazillion的EJB:
Extreme #1:
my-ejb.jar/
com.me.myorg.MonolithicBean
List<User> getUsersFromMars();
List<User> getUsersFromVenus();
//... a bazillion methods
Extreme #2:
my-mars-ejb.jar/
com.me.myorg.MarsBean
List<User> getUsersFromMars();
my-venus-ejb.jar/
com.me.myorg.VenusBean
List<User> getUsersFromVenus();
//... a bazillion EJBs with 1-and-only-1 method each
很顯然,我會假設最佳實踐決定了這兩個極端之間的某種中介策略。所以我問,Java/Oracle對於將應用程序的業務邏輯分解成bean以及如何將它們模塊化到正確的級別(EJB,包,類或方法)以便可重用,可伸縮和安全的問題提出了什麼意見?
謝謝@Arjan(+1)!那麼,這個「PurchaseService」會在它自己的EJB中,還是我會在同一個EJB中分組多個服務? – IAmYourFaja
PurchaseService將是一個EJB,但它可以(幾乎應該!)注入一些部分邏輯委託給的bean,例如CustomerDAO以獲取有關進行購買的客戶的更多詳細信息,PurchaseDAO將持續實際購買,也許一個OrderQueue發送一個JMS消息,開始交付購買商品的處理,並通知NotificationService發送一個確認其購買的通知。因此,單個服務注入10個甚至更多的其他bean並不罕見。 –