2024年來臨之際,給大家帶來一款新型的Java ORM框架(按現有設計,有望支持其他語言)作為新年禮物,名叫Orca。還在開發中,之後繼續更新開發進度。
Orca的主要設計目標是:
- 要簡單易用,原生支持領域驅動設計
- 在功能和性能上要超越傳統ORM框架,例如JPA (Hibernate)
- 提供低代碼/無代碼開發模式
- 數據與代碼一體化架構,簡化應用程序發佈過程
- 支持GraalVM
為什麼要發明Orca呢?因為Java社區沒有好用的ORM框架,20年來沒有什麼實質上的改善。JPA功能多,但是性能差;MyBatis性能強,但是功能少;其他小眾的ORM框架也不如人意。而且,GraalVM的興起也對ORM框架提出了新要求,讓傳統ORM框架黯然失色。Orca在追求高性能、支持GraalVM的同時,還支持JPA所具有的這些功能:自動建表、變更檢測、關聯、級聯、惰性加載、查詢條件構建器(Criteria Builder),等等。
與JPA顯著不同的是,Orca的實體類(entity class)不是用註解Java代碼的方式來編寫的,而是用配置的方式來編寫的(用可視化編輯器在線編輯,生成YAML文件,也可以直接編輯YAML文件),這樣一來就能提供低代碼/無代碼開發模式,甚至可以一鍵發佈並且熱部署。默認情況下,實體類甚至是沒有代碼的,直接就能以動態類型的方式在線運行。另外,您也可以選擇自動導出Java代碼,以便於用靜態類型的方式與其他程序集成。至於為什麼不能用Java編寫實體類,再導入回模型?因為從架構上來説,實體類需要有唯一的source of truth,要麼用配置的方式,要麼用寫代碼的方式,不能混着用,以免造成混亂。如果大家認為確實有必要支持用Java編寫實體類,也許可以考慮提供支持。
Orca還是數據引擎的基礎。在我們即將推出的文章中,將會介紹企業應用平台的六大引擎,其中最重要的就是數據引擎。數據引擎負責數據的建模、管理和存取,為其他引擎提供數據源。
Orca的開發過程也十分有趣,各種架構模式和設計模式的使用,都值得向大家分享。