《針對PostgreSQL的最佳Java ORM框架》要點:
本文介紹了針對PostgreSQL的最佳Java ORM框架,希望對您有用。如果有疑問,可以聯系我們。
相關主題:PostgreSQL教程
Java生態系統提供了大量的ORM框架(水平各有不同).雖然ORM大部分性能問題是由開發者自己引起的,但以只讀方式使用ORM是不值得的.在此,我保舉一款ORM,該框架允許使用PostgreSQL的高級功能,并且代碼量不大.
為了選出最佳框架,我測試了每個主流框架的功能,我決定通過測試包括以下所有功能的可用ORM框架的Demo來抉擇最佳框架(我選擇的項目需要與Spring集成,所以是否可以和Spring良好集成是我重點考慮的因素之一).該Demo的所有功能大致有提供JSON支持-基于JSON的排序和過濾,支持自定義復合類型,枚舉類型,數組類型,帶有OUT參數的存儲過程,審計用戶在未知時間點創建或修改記錄的可能性,還支持修訂版本號,通過Spring Data Pageable類對所選記錄進行分頁和排序以及支持Java 8 time API類型.
幾大主流ORM框架測試
以下選擇的大部分框架支持所需功能,少量不支持的也可以通過代碼實現,過時的框架或不包括上述功能的框架排除在該測試之外.
ActiveJDBC是活動記錄模式的實現.ActiveJDBC是輕量級和易于使用的ORM框架.不幸的是,它沒有與Spring事務管理集成,所以不得不編寫一些代碼來實現,不過相信在社區的贊助下,ActiveJDBC會發展得更好.
Apache Cayenne是一個很易于掌握的ORM框架,它從XML模型生成域對象(DO),該模型可以通過捆綁的GUI應用程序(稱為建模器)進行管理.與ActiveJDBC相同,我不得不將自定義集成寫入Spring事務管理(STA).
Apache OpenJPA是Apache組織提供的JPA實現.JPA是Java EE5規范之一,是一個ORM規范,雖然Spring為OpenJPA的集成提供了輕量級的支持,但是它比Hibernate更難集成.因此,我認為在Spring中使用OpenJPA沒有什么太大意義.Hibernate是使用cglib在運行期動態修改字節碼來對entity進行增強,而openjpa則是在編譯時字節碼增強的.
DataNucleus Access Platform是一個豐富的框架,提供JPA,JDO和REST API實現.對我來說,JPA是實現它最簡單的辦法.該框架提供了一些映射,如Java 8 time API映射.不幸的是,映射不能在本地查詢調用中使用,因此有必要編寫一組額外的映射.
Ebean實際上是由Play Framework使用的靈活輕量級的ORM.即使ORM不是Spring提供的,但很容易集成.該框架也是字節碼增強的.
EclipseLink是Eclipse的JPA實現.它在Spring中有一些支持,但是就像OpenJPA一樣,沒有什么意義.為了能夠使用用戶定義的類型,還不得不寫一些mappers.
jOOQ是可以在Spring Initializr頁面上選擇的三大框架之一. 這意味著可以與Spring良好集成.ORM不僅為DO生成代碼,還為用戶定義的類型和存儲過程生成代碼.但它仍然有一些缺陷,如UDT與POJO或DAO插入辦法結合時,不返回自動生成的主鍵值問題.另一方面,框架的作者Lukas Eder正在積極改進該框架.
MyBatis是Spring Initializr頁面上提供的第三個ORM選項.MyBatis是一個成熟的輕量級框架,與Spring良好集成.不幸的是,由于它的輕量級,故而缺乏很多原生支持PostgreSQL的高級功能,不過該問題可以辦理.
Hibernate在Spring Data JPA項目中用作JPA的默認實現.由于這一點,它與Spring完美集成.同時,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的ORM框架.
通過自定義代碼,我的意思是一個ORM允許通過一些API來使用某一特性,但是很多工作還是由開發人員完成的.自定義映射器或部分支持意味著ORM提供更高級別的API.
排除的ORM框架
以下框架由于缺乏對一個或多個所需特征的支持或者由于其他問題而被排除在測試之外.不是對這些框架有任何負面看法,只是不適合我的需要.
Exposed是JetBrains實現的用Scala開發的ORM.我試圖在Jav中使用它,但它真的太難了,這幾乎不可能.對于Scala開發人員,這可能是一個很好的選擇.
Reladomo是一個企業ORM,但它不支持UDT或其他PostgreSQL高級功能.
Speedment當前的穩定版本不支持事務.
而以下這些框架似乎不再被開發或維護:
ActiveJPA似乎從來沒有穩定的版本出現,最后一版是2014年.
Apache Torque的最后一版是在2013年.
Carbonado是一個非活躍項目.
Hydrate的最后一版是2006年.
IBM PureQuery的最后一個版是2009年.
JDO Instruments甚至沒有主頁.
JPOX的最后一版是2013年.
ORMLite的最后一版是2013年.
QuickDB ORM僅在Google Archive中可用,其最后一次提交是2010年.
Speedo的最后一版是2005年.
TJDO項目的最后一版是2008年.
結語
經過測試比擬,最后我決定在主項目中使用jOOQ,它可以與Spring很好地集成,當然還是有一些缺點,其他開發人員也可根據需求尋找不同的框架.
《針對PostgreSQL的最佳Java ORM框架》是否對您有啟發,歡迎查看更多與《針對PostgreSQL的最佳Java ORM框架》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/9637.html