Java 的 ORM 框架發展了很多年,一直存在各種各樣的問題,相信大家的體會比我還要深,到底這是什么什么呢?我從兩個角度來分析一下,大家看看對不對?
1 )語意表達的雙重性
一個 Java Bean 的定義,只能表達一種語意,就是與其它相關的 Java 類相互協作實作一項特性,通常用于資料的載體,但不能表達資料庫互動時的 SQL 的語意,兩種內在的語意差異很大(例如:Java Field 在資料庫中映射為 Column,一個 Column 可以進行排序、算術運算、比較運算等),很難通過 Annotation 進行描述,除非 Java 中增加新的特性,用于描述一個 Java Class 的多重語意。既然一個 Java Class 無法滿足雙重語意的描述,只能新增代碼進行定義和描述,此時又出現重復代碼和變更的一致性,通過 Maven 或 APT 形式生成,也會存在每次變更后,都需要重新運行任務,才能正常使用,使的開發程序變得更糟。
2 )語法一致性
Java 語法與 SQL 語法從語意上說基本是一致的,但表現形式不一樣,例如:Java 中邏輯運算式:a && b 或者 a || b,而 SQL 中則是 a AND b 或者 a OR c,兩種型別表達語意上一致,但語法上不能直接互換。同時,也無法 Java 對語意的決議和執行程序進行干預,也就導致了 Java 的運算式無法直接轉換為 SQL 運算式,只能以字串的形式進行拼接,通過對字串拼接程序進行抽象和封裝,形成一系列 API,這也就導致了簡單的運算式變成若干 Java 方法的嵌套,嚴重影響了代碼的可理解性。
有興趣的,可以訪問:https://github.com/braisdom/ObjectiveSql
uj5u.com熱心網友回復:
我覺得最大的作用是在SQL和JAVA之間找到一種平衡uj5u.com熱心網友回復:
沒有這么簡單的uj5u.com熱心網友回復:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/235725.html
標籤:Java相關
上一篇:正則匹配
