2008-10-08 43 views
1

我有一些SEA應用程序與一些JPA/Hibernate實體。我現在想知道在哪裏放置我的查詢,持久化方法。哪裏(哪一層)放實體查詢方法,「堅持」等方法?

默認選擇似乎把它們放在一個會話bean層注入

@PersistenceContext(...) @Inject EntityManager entityManager; 

但我想我寧願對實體本身的方法。什麼是專業的/騙子?

  1. Testablity?
  2. 好嗎?
  3. 表現?

是否有人有鏈接到實體,而不是會話bean上的方法與EntityManager等進行交互的最佳實踐?

最佳, 安德斯

回答

2

我有SEAM沒有經驗,但是從我的Java項目的經驗,我發現最容易保持豆清楚的堅持方法。我們通常做的:

  • 對業務對象豆類(如「用戶」和「設置」爲例)
  • 具有能夠保持和檢索這些豆(簡單的CRUD)一個DAO層
  • 有一個服務層,它不知道如何處理這個bean,甚至可能如何構建一個豆的聚合體

這樣,一切都是相當分離的,並且很容易進行單元測試。性能通常不是這個設置的問題。

1

是的,這也是我以前做過的。一般來說,我認爲EJB非常詳細,並且是樣板化的,但SEAM確實有點幫助,所以在我當前的項目中,爲了查詢和持久化而增加會話bean的額外層讓我很煩惱。我有這樣的感覺,如果我能殺死這層,我可以製作一個相當簡潔的應用程序...