more effective entity bean(新的改進entity bean的效能的七條(EJB2.0版)) (轉)

worldblog發表於2007-12-11
more effective entity bean(新的改進entity bean的效能的七條(EJB2.0版)) (轉)[@more@]

  在工業中有關於entity bean的很多FUD(Fear,Uncertainty,Doubt)。
很多機構正在不合適的使用它們,造成問題。這裡有一些和
tricks讓你的entity bean有更高的效能。

1.entity bean不應該由的客戶端直接,而是應該被在同一程式
中的session bean和entity bean呼叫。鑑於此,你應該透過local
interface來呼叫它們,而不是remote interface。

2.儘可能使用你的容器的caching。如果你的bean是隻讀的,那麼
讓你的容器去讓他們永久的caching。如果它們是最大限度的讀或
讀寫的,許多容器有演算法來處理這種情況。記住:是便宜的。

3.確定你的上的事務執行得越短越好,並且封裝你想在事務中
做的entity bean操作。這很重要因為JC發生在事務的開始和結束。
如果你在每次get/set操作時使用事務,你在每次方法呼叫時做了 hit。
用需要的容器管理事務屬性發布session和entity bean。這將建立
在同一事務中封裝了所有entity bean的session bean的事務。

4.儘量使用CMP。CMP天生的比BMP效能高。

5.如果你需要在每個事務中存取你的entity bean的所有資料,
不要在你第一次存取你的bean時取出你的所有欄位的資料:你可
以透過來使用BMP來fine-tuning你的程式碼;或者如果你
的容器工具允許,你可以用CMP的方式來lazy-load你的欄位。

6.如果你使用CMP,讓你的容器批次的持久化你的欄位。比如,
LOGIC有field groups的術語。這個讓你定義groups of
fields(甚至跨關係)來一起持久化,減少需要的sql量。

7.如果你使用CMP,用你的容器工具強制你的finder方法自動load
你的bean,而不是讓finder和loading發生在兩個分離的SQL表達
式。唯一一種你不該用這種方法的情況是你不準備從你的entity
bean讀資料(如set欄位,而不是get欄位)。

  用上面的方法來調節你的entity bean的效能,可以建立
在中建模單列的細粒度的entity bean,和建模關係到
多表的複雜的資料的粗粒度的entity bean。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991199/,如需轉載,請註明出處,否則將追究法律責任。

相關文章