OO和SQL,應該攜手共進
最近兩年來,經常在OO和SQL這兩兄弟陣營裡轉來轉去,總想做出個“決斷”,結果卻是誰也捨不得,手心手背都是肉啊。
十年前學應用開發的時候,SQL是絕對的王者,一直也就用了好幾年,搞定了不少事情。有時候也覺著煩,尤其是許多不相干的呼叫程式碼,羅羅嗦嗦貼上個沒完。這時候總是想,能不能輕鬆點啊。
這時,以Hibernate為代表的ORM流行起來了,筆者也就興沖沖地投入到實踐當中。四五年前已經可以很舒服地配合Spring的 Hibernate Template寫程式碼了,那是相當地省事啊。雖然Hibernate也不是盞省油的燈,費了不少學習和除錯的時間(老實說筆者到現在也算不上精通),好在以OO方式寫應用,邏輯程式碼清晰多了,結構化進一步提高,也算值了。這時候又在想,還能不能更輕鬆點啊。
而這時,RoR火了起來。筆者在一年半前一接觸,立馬就迷上了Active Record,以前多少煩惱似乎瞬間煙銷雲散了,實在是非常的爽快!這個階段,筆者已經徹底成為OO的迷信者,言必OO,並且深信以AR為代表的DSL是企業應用的最佳解決方案。
整好這時碰到一些傳統C/S轉B/S的企業應用專案,筆者滿以為可以輕鬆搞定,結果卻是出人意料,竟然被這些專案當頭打了一棒。由於傳統企業應用是以寫為主的OLTP,並混合了部分查詢相當複雜的OLAP,效能要求還是比較高的,ORM很快就敗下陣來。很多時候甚至逼迫筆者重拾SQL,這時候兩難的境地出現了:一邊是清晰的OO,一邊是高效的SQL;普通CRUD是OO的強項,而複雜的查詢統計則又是SQL的天賦。筆者於是無奈地在這兩個陣營裡轉來轉去,一面到各個技術站點尋求“真理”。可惜這年頭,以SQL為代表的傳統陣營和以OO為代表的新生陣營有些“水火不相容”的味道,正是“人也多嘴也多講不清道理”。尋求得越多,也就疑惑得越多。自己也參與併發起過一些爭論,結果愈發雲山霧水。
工作生活疲累之餘,信手翻翻十多年前一度熱衷的儒釋道經典,這才猛然間有了“不識廬山真面目,只緣身在此身中”的覺悟。答案其實已經在筆者實踐的“無奈”當中。由此可見古人“相容幷包”的睿智。
正所謂OO和SQL,本是同根生,相煎何太急。與其爭論誰比誰更高更強,不如共同攜手解決現實問題。
在此原則下,筆者對專案中SQL不爽的部分改用OO,OO不適合的地方沿用SQL,終於達到了很好的平衡。
於是,曾經深信而後懷疑否定的的AR,攜手SQL老大哥,相當痛快地解決了大部分企業應用問題。
對立並非正途,合作才是王道,這個道理在程式碼領域同樣成立。
十年前學應用開發的時候,SQL是絕對的王者,一直也就用了好幾年,搞定了不少事情。有時候也覺著煩,尤其是許多不相干的呼叫程式碼,羅羅嗦嗦貼上個沒完。這時候總是想,能不能輕鬆點啊。
這時,以Hibernate為代表的ORM流行起來了,筆者也就興沖沖地投入到實踐當中。四五年前已經可以很舒服地配合Spring的 Hibernate Template寫程式碼了,那是相當地省事啊。雖然Hibernate也不是盞省油的燈,費了不少學習和除錯的時間(老實說筆者到現在也算不上精通),好在以OO方式寫應用,邏輯程式碼清晰多了,結構化進一步提高,也算值了。這時候又在想,還能不能更輕鬆點啊。
而這時,RoR火了起來。筆者在一年半前一接觸,立馬就迷上了Active Record,以前多少煩惱似乎瞬間煙銷雲散了,實在是非常的爽快!這個階段,筆者已經徹底成為OO的迷信者,言必OO,並且深信以AR為代表的DSL是企業應用的最佳解決方案。
整好這時碰到一些傳統C/S轉B/S的企業應用專案,筆者滿以為可以輕鬆搞定,結果卻是出人意料,竟然被這些專案當頭打了一棒。由於傳統企業應用是以寫為主的OLTP,並混合了部分查詢相當複雜的OLAP,效能要求還是比較高的,ORM很快就敗下陣來。很多時候甚至逼迫筆者重拾SQL,這時候兩難的境地出現了:一邊是清晰的OO,一邊是高效的SQL;普通CRUD是OO的強項,而複雜的查詢統計則又是SQL的天賦。筆者於是無奈地在這兩個陣營裡轉來轉去,一面到各個技術站點尋求“真理”。可惜這年頭,以SQL為代表的傳統陣營和以OO為代表的新生陣營有些“水火不相容”的味道,正是“人也多嘴也多講不清道理”。尋求得越多,也就疑惑得越多。自己也參與併發起過一些爭論,結果愈發雲山霧水。
工作生活疲累之餘,信手翻翻十多年前一度熱衷的儒釋道經典,這才猛然間有了“不識廬山真面目,只緣身在此身中”的覺悟。答案其實已經在筆者實踐的“無奈”當中。由此可見古人“相容幷包”的睿智。
正所謂OO和SQL,本是同根生,相煎何太急。與其爭論誰比誰更高更強,不如共同攜手解決現實問題。
在此原則下,筆者對專案中SQL不爽的部分改用OO,OO不適合的地方沿用SQL,終於達到了很好的平衡。
於是,曾經深信而後懷疑否定的的AR,攜手SQL老大哥,相當痛快地解決了大部分企業應用問題。
對立並非正途,合作才是王道,這個道理在程式碼領域同樣成立。
相關文章
- 攜手共進 互利互贏 | 老男孩教育攜手NGINX ATC,共創NGINX行業新生態Nginx行業
- 捷報頻傳 | 博睿資料簽約華潤集團,攜手共進共創共贏
- 攜手共進——《NettyINACTION》中文版《Netty實戰》答疑解惑Netty
- 鴻翼&深信服:攜手共創資料巨集圖
- OO DDD應用!
- 因地制宜,攜手共贏 | 亞太地區遊戲發行商洞察遊戲
- SQL Story(十)————遊標的應該與不應該 (轉)SQL
- 共創開源攜海龍電腦城將正版進行到底(轉)
- CentOS加入RedHat 攜手推進開源革新CentOSRedhat
- 眾人拾柴火焰高 昇騰攜手夥伴共築AI新高地AI
- 華為雲亮相LEAP科技展,攜手沙特共創智慧新高度
- 資料庫和OO資料庫
- Coremail郵件安全全球渠道招募,2022與您攜手共贏REMAI
- 資訊分享 | 華為雲攜手圖撲軟體共話行業新發展行業
- TUV南德攜手香港德國商會,共話物聯網網路安全
- 混合OO和Functional設計Function
- 天翼雲攜手華為,強強聯合,共創資料儲存新生態
- 順豐供應鏈攜手亞馬遜雲科技,推動供應鏈智慧轉型和升級亞馬遜
- 微博和淘寶攜手 共推網紅電商平臺
- 又來演算法和OO演算法
- 黑芝麻智慧攜手均聯智行,深度共創自動駕駛域控智慧方案自動駕駛
- 技術認證 | 圖撲軟體攜手華為雲再創合作共贏新局面
- 華為雲釋出15大創新服務 攜手夥伴及開發者共創新價值
- 加速創新,攜手共贏新時代|優炫資料庫百城巡展首站告捷資料庫
- 塗鴉智慧攜手澤諺科技達成深度合作,共拓智慧鎖多元落地場景
- 直擊JDD | 京東開啟技術服務元年:攜手合作夥伴,共創產業未來產業
- IBM攜手亞馬遜雲科技,共創"不可或缺"的客戶價值與體驗IBM亞馬遜
- Thoughtworks 正式成為阿里云云原生核心合作伙伴,攜手共創數字新未來!阿里
- 敏捷改進應該問題驅動敏捷
- 中富通“攜手”安司源推進資訊保安產業發展產業
- 分享經濟2.0:創新與監管能否攜手並進?
- 國籌資料攜手騰訊,共創智慧商業領域智慧零售新標杆
- NQI質量基礎設施“一站式”服務攜手三方共贏
- 攜手雲網融合 共築安全可信|綠盟科技受邀出席移動雲Tea Talk技術沙龍
- 華為中國合作伙伴大會2024:攜手共贏,數智轉型新篇章
- MediaTek天璣開發者大會MDDC2024,攜手產業夥伴共創生成式AI新生態產業AI
- Function和Object 應該知道的FunctionObject
- 華為和東軟攜手完成首次C-V2X互聯互通應用測試