如何高效率的使用JavaEE?

雖然Java領域有無數的ORM框架,但是這些ORM框架基本上大同小異。要正確使用ORM還真不是一件簡單的事情。本文僅簡單整理一下ORM的原理,基本用法,以及如何避免各種陷阱的基本程式設計原則。

JavaEE ORM的原理

先說ORM的實現原理。其實,要實現JavaBean的屬性到資料庫表的欄位的對映,任何ORM框架不外乎是讀某個配置檔案把JavaBean的屬性和資料庫表的欄位自動關聯起來,當從資料庫Query時,自動把欄位的值塞進JavaBean的對應屬性裡,當做INSERT或UPDATE時,自動把 JavaBean的屬性值繫結到SQL語句中。但是,幾乎所有的ORM都提供“按需讀取”的功能,比如一個User有id,name,email和 address這4個欄位,但是address欄位很少用,於是ORM只讀取前3個欄位,直到呼叫User的getAddress()方法時,才去資料庫 中讀取address的值。這個功能顯然不能通過User的get/set完成。

因此,ORM需要採用某種方式生成一個User類的子類,並且覆寫get /set方法,這樣,才能在呼叫get方法時有機會從資料庫中讀取。類似的對User的修改檢測也是這樣實現的。

ORM兩種增強的方式

ORM為我們自己的JavaBean實現子類的方法很多,這個過程簡單稱之為“增強”,基本上有兩種方法:Hibernate使用CGLIB在載入 我們的User類時動態建立了一個子類,而JDO則要求編譯完User類後再利用它提供的工具對User類進行改造,以便實現JDO需要的各種介面。

提醒:就是這種極其變態的設計導致了使用JDO的極大困難,在我們編譯完原始碼後,還需要額外執行一個增強命令,或者額外編寫Ant任務,極大地影響了快速開發和單元測試,所以,凡是採用靜態生成持久類的ORM,要在第一時間直接排除。

原作者: 小琪

職業, 框架, 高效率,
相關問題答案