laravel查詢構造器DB還是ORM

來源:互聯網
上載者:User
這兩者有什麼區別,各該用在什麼情境中

回複內容:

這兩者有什麼區別,各該用在什麼情境中

我們所有操作都是走的orm,因為操作簡單 直觀明了 好維護,效能是低一些 但還沒有多致命,真有並發需要最佳化了 用DB也不一定能解決問題。還是要瞭解orm每個方法的意思,不然你可能一不小心就會多出來很多很多sql,比如取列表的時候加個with不要僅僅靠關係來擷取聯表的其他內容。

沒用過laravel,但估計理解應該一樣,DB是直接寫SQL操作資料庫,ORM是利用對象操作資料庫。

用SQL還是用ORM都能操作資料庫,SQL是關係型資料庫的查詢語言,而關係型資料庫是大主流,對SQL的理解和使用是必須的。但程式開發目前更傾向於OOP思想,因為它有更人性化的表達力,而SQL表達力上不如OOP。表達能力越好的語言,更利於人類整理組織代碼邏輯,更具表達能力的語言在整個開發效率上有質的最佳化,代碼也會更穩健,可能出現的BUG會更少。

大段的SQL要進行調試不會比ORM進行調試要容易,並且ORM一般能切換不同資料庫,這些就是ORM的優勢。穩健的系統更應該使用ORM,這能有效避免失誤引起的低級錯誤。但ORM的代碼並不統一,你在laravel熟悉了它的ORM,不能直接用於其它framework。

如果你入行不長,屬於新手,那儘可能多用SQL,因為SQL不可避免要用到,深度瞭解SQL是必須的,多用可以當作是練習。如果你覺得自己已經經驗豐富了,那就用ORM,這樣可以降低失誤率。

建議用DB門面直接操作資料庫,因為ORM效能低。

資料查詢上面,ORM不會比DB差的,就比如with,是用了sql最基本的拆語句最佳化。ORM的損耗僅僅是代碼層面的,這已經不算是問題了。

ORM適用於一般到中等複雜度的查詢,也適用於各種模型操作,比如有一個關係targets,你可以直接用targets()->delete()等等進行關係資料操作。
ORM中的虛刪除,自動更新時間欄位,欄位保護,欄位類型轉換,都會在一些規範而且系統的工程中讓你受益。

另外DB的情境:一些比較複雜的查詢語句,事務操作,等都需要DB來完成。

DB主要是一個查詢構造器(SQLBuilder),它會幫你把輸入的參數轉變成SQL語句去資料庫裡查詢,和你自己手動寫SQL語句本質上是一樣的。
ORM是一個對象關係映射(Object Relational Mapper)工具,它會把資料庫中的資料對應成對象和集合對象,你無需接觸底層資料,可以直接調用映射出來的對象進行開發。

DB適合用於對效能要求高或者商務邏輯簡單的項目,ORM適合商務邏輯比較複雜的項目。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.