還在用Myabtis、Hibernate嗎?請(qǐng)嘗試新ORM
ObjectvieSQL簡(jiǎn)介
ObjectiveSQL 是一個(gè)Java ORM 框架,它不僅是Active Record 模式在Java 中的應(yīng)用,同時(shí)還針對(duì)復(fù)雜SQL 編程提供近乎完美的解決方案,使得Java 代碼與SQL 語(yǔ)句有機(jī)的結(jié)合,改變了傳統(tǒng)SQL 的編程模型(以字符串拼接為主的編程模型)。
ObjectiveSQL 項(xiàng)目分為兩部分:一部分是運(yùn)行期Maven 依賴 objective-sql 或 objsql-springboot,主要實(shí)現(xiàn)了基礎(chǔ)的ORM 特性和SQL 編程模型,另一部分是IntelliJ IDEA 插件,兼容Java 運(yùn)算符重載和動(dòng)態(tài)代碼提示。
ObjectiveSQL 主要解決:
- 動(dòng)態(tài)代碼生成:基于領(lǐng)域模型(Domain Model),自動(dòng)生成簡(jiǎn)單SQL 編程代碼,使應(yīng)用系統(tǒng)開(kāi)發(fā)只關(guān)注自身的業(yè)務(wù)特性,提升開(kāi)發(fā)效率;
- 可編程SQL:將SQL 中的控制原語(yǔ)、謂詞、函數(shù)以及過(guò)程化邏輯等抽象為Java 中的高級(jí)類型,與Java 融為一體,使得SQL 成為真正過(guò)程化、邏輯型編程語(yǔ)言,可封裝、可復(fù)用以及單元測(cè)試;
- 表達(dá)式語(yǔ)法一致性:Java 語(yǔ)法與SQL 語(yǔ)法等價(jià)替換,包括:數(shù)學(xué)計(jì)算、函數(shù)調(diào)用、比較與邏輯計(jì)算表達(dá)式,Java 表達(dá)式可以直接轉(zhuǎn)換為SQL 表達(dá)式;
ObjectiveSQL特性
- 使用一個(gè)注釋,您便Class具有SQL編程的全功能
- 簡(jiǎn)單的關(guān)系查詢(has_one,has_many和belongs_to)和分頁(yè)查詢
- 使用Java語(yǔ)法編寫SQL表達(dá)式(arithmetic,comparison和logical)
為什么要選擇ObjectiveSQL
- 如果您的項(xiàng)目專注于基于關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)分析,以及SQL語(yǔ)句中的許多算術(shù)表達(dá)式。ObjectiveSQL將幫助您使用Java語(yǔ)法方便且安全地編寫表達(dá)式。
- 如果您不想編寫數(shù)據(jù)庫(kù)訪問(wèn)和各種配置文件的Java代碼,ObjectiveSQL的動(dòng)態(tài)代碼生成將幫助您無(wú)需編碼即可訪問(wèn)數(shù)據(jù)庫(kù)
性能展示

ObjectiveSQL使用例子
復(fù)雜的SQL編程

如您所見(jiàn),Java運(yùn)算符可以轉(zhuǎn)換為SQL運(yùn)算符,這意味著您可以使用Java語(yǔ)法編寫SQL。在Java中,可以進(jìn)行SQL動(dòng)態(tài)編程,邏輯等。
零編碼的簡(jiǎn)單SQL編程

持久化(Persistence)

計(jì)數(shù)和查詢(Counting and Quering)

關(guān)聯(lián)查詢(Relation Quering)

分頁(yè)查詢(Paged Quering)

總結(jié)
看完這個(gè)ORM框架,讓我想起了以前的JFINAL里的ORM,當(dāng)然如何選擇項(xiàng)目的ORM還是要依據(jù)項(xiàng)目具體情況具體分析,看項(xiàng)目里Model是貧血模型還是充血模型,是重關(guān)系數(shù)據(jù)庫(kù)還是其他等等,不能簡(jiǎn)單的看紙面數(shù)據(jù),因?yàn)槟悴簧钊胙a(bǔ)課,會(huì)在項(xiàng)目開(kāi)發(fā)中碰到意想不到的問(wèn)題,拖延進(jìn)度。
因此,Myabtis、Hibernate、JPA和ObjectiveSQL等等,你會(huì)如何選擇呢?