日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

ORM MVC、模板引擎介绍(建议收藏)

發布時間:2025/3/19 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORM MVC、模板引擎介绍(建议收藏) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ORM

  • ORM
    • 一、什么是ORM
    • 二、認知 ORM
    • 三、數據庫和對象的映射關系
    • 四、優缺點
    • 五、常用的 ORM 庫
  • MVC
    • 什么是MVC
  • 模板引擎

ORM

一、什么是ORM

ORM是隨著面向對象的軟件開發方法發展而產生的。面向對象的開發方法是
當今企業級應用開發環境中的主流開發方法,關系型數據庫是企業級應用環境中永久存放數據的主流數據存儲系統。


對象和關系數據是業務實體的兩種表現形式,業務實體在內存中表現為對象,在數據庫中表現為關系數據。內存中的對象之間存在關聯和繼承關系,而在數據庫中,關系數據無法直接表達多對多關聯和繼承關系。


因此,ORM系統一般以中間件的形式存在,主要實現程序對象到關系型數據庫數據的映射。ORM與數據庫的對應關系如圖5.2所示。


二、認知 ORM

對象關系映射(Object Relational Mapping,ORM)是一種程序設計技術,用于實現面向對象編程語言里不同類型系統的數據之間的轉換。從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬對象數據庫”。


面向對象是在軟件工程的基本原則(如耦合、聚合、封裝)基礎上發展起來的,而關系數據庫則是從數學理論發展而來的,兩套理論存在顯著的區別。為了解決這個不匹配問題,ORM技術應運而生。

三、數據庫和對象的映射關系

  • 數據表(table)----> 類(class)
  • 數據行(record,也稱為記錄)----> 對象(object)
  • 字段(field)----> 對象的屬性(attribute)

舉個例子:
下面是SQL語句:

sql = 'select * from books order by price' cursor.execute(sql) data = cursor.fetchall()

寫成ORM

data = Book.query.all()

四、優缺點

.優勢

第一:隱藏了數據訪問細節,“封閉”的通用數據庫交互,ORM的核心。他使得我們的通用數據庫交互變得簡單易行,并且完全不用考慮該死的SQL語句。快速開發,由此而來。第二:ORM使我們構造固化數據結構變得簡單易行。在ORM年表的史前時代,我們需要將我們的對象模型轉化為一條一條的SQL語句,通過直連或是DB helper在關系數據庫構造我們的數據庫體系。而現在,基本上所有的ORM框架都提供了通過對象模型構造關系數據庫結構的功能。這,相當不錯。

缺點

第一:無可避免的,自動化意味著映射和關聯管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)。現在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。第二:面向對象的查詢語言(X-QL)作為一種數據庫與對象之間的過渡,雖然隱藏了數據層面的業務抽象,但并不能完全的屏蔽掉數據庫層的設計,并且無疑將增加學習成本.第三:對于復雜查詢,ORM仍然力不從心。雖然可以實現,但是不值的。視圖可以解決大部分calculated column,case ,group,having,order by, exists,但是查詢條件(a and b and not c and (d or d))。

五、常用的 ORM 庫

Python中提供了非常多的ORM庫,一些ORM庫是框架特有的,還有一些是通用的第三方包。雖然每個ORM庫的應用領域稍有不同,但是它們操作數據庫的理論原理是相同的。
下面列舉了一下常用的Python ORM框架。

  • Django ORM:Django是一個免費、開源的應用程序框架,它的ORM是框架內置的。由于Django的ORM和框架本身結合太緊密了,所以不推薦脫離Django框架使用它。
  • SQLAlchemy:一個成熟的ORM框架,資源和文檔都非常豐富,大多數Python Web框架對其都有很好的支持,能夠勝任大多數應用場合。
  • Peewee:一個輕量級的ORM。Peewee基于SQLAlchemy內核開發,整個框架由一個文件構成。Peewee更關注極簡主義,具備簡單的API以及容易理解和使用的函數庫。
  • Storm:一個中型的ORM庫。它允許開發者跨數據庫構建復雜的查詢語句,從而支持動態地存儲或檢索信息。

MVC

什么是MVC

MVC 模式(Model–view–controller)是軟件工程中的一種軟件架構模式,它把軟件系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。

MVC 模式的目的是實現一種動態的程序設計,簡化后續對程序的修改和擴展,并且使程序某一部分的重復利用成為可能。除此之外,MVC 模式通過對復雜度的簡化,使程序的結構更加直觀。軟件系統在分離了自身的基本部分的同時,也賦予了各個基本部分應有的功能。專業人員可以通過自身的專長進行相關的分組:

  • 模型(Model):程序員編寫程序應有的功能(實現算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能);
  • 控制器(Controller):負責轉發請求,對請求進行處理;
  • 視圖(View):界面設計人員進行圖形界面設計。

MVC模式中三個組件的詳細介紹如下:

模型(Model):用于封裝與應用程序的業務邏輯相關的數據以及對數據的處理方法。“Model”有對數據直接訪問的權力,例如對數據庫的訪問。“Model”不依賴“View”和“Controller”,也就是說, Model 不關心它會被如何顯示或是如何被操作。但是 Model 中數據的變化一般會通過一種刷新機制被公布。為了實現這種機制,那些用于監視此 Model 的 View 必須事先在此 Model 上注冊,由此,View 可以了解在數據 Model 上發生的改變。(比如:觀察者模式(軟件設計模式));
視圖(View):能夠實現數據有目的的顯示(理論上,這不是必需的)。在 View 中一般沒有程序上的邏輯。為了實現 View 上的刷新功能,View 需要訪問它監視的數據模型(Model),因此應該事先在被它監視的數據那里注冊;
控制器(Controller):起到不同層面間的組織作用,用于控制應用程序的流程。它處理事件并作出響應。“事件”包括用戶的行為和數據 Model 上的改變。
從MVC模式的一般理解來看,視圖層與模型層是存在直接聯系的,并且模型層的變化會通過視圖層反映出來,這確實是MVC模式的標準理解,不過在我目前接觸到的實際應用中,更多的情況時,視圖層與模型層是通過控制層聯系起來的,兩者之間并無直接的聯系,三者之間的關系更類似下圖所示:

模板引擎

了解模板引擎:模板引擎(用于Web開發)是為了使用戶界面與業務數據(內容)分離而產生的,它可以生成特定格式的文檔,用于網站的模板引擎就會生成一個標準的HTML文檔。

總結

以上是生活随笔為你收集整理的ORM MVC、模板引擎介绍(建议收藏)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。