第六十五篇 ORM框架

1、ORM簡介

1.什麼是ORM

1.對象關係映射(Object Relational Mapping,簡稱ORM)模式是一種爲了解決面向對象與關係數據庫存在的互不匹配的現象的技術
2.簡單的說,ORM是經過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關係數據庫中程序員

2.ORM如何實現持久化

1.非ORM的持久化方案

1.採用硬編碼方式,爲每一種可能的數據庫訪問操做提供單獨的方法算法

2.方案的不足之處:sql

  • 1.持久化層缺少彈性。一旦出現業務需求的變動,就必須修改持久化層的接口
  • 2.持久化層同時與域模型與關係數據庫模型綁定,無論域模型仍是關係數據庫模型發生變化,毒藥修改持久化曾的相關程序代碼,增長了軟件的維護難度

2.ORM的持久化方案

1.採用映射元數據來描述對象關係的映射,使得ORM中間件能在任何一個應用的業務邏輯層和數據庫層之間充當橋樑數據庫

2.ORM的方法論基於三個核心原則:app

  • 1.簡單:以最基本的形式建模數據
  • 2.傳達性:數據庫結構被任何人都能理解的語言文檔化
  • 3.精確性:基於數據模型建立正確標準化了的結構

2、ORM實現原理

1.之因此本身寫ORM框架,是爲了更好的理解框架的實現原理框架

2.要實現的功能:工具

  • 1.自動生成SQL語句
  • 2.建立表、增刪查改

3.爲何要建立表:性能

  • 1.一個項目對應一個數據庫
  • 2.一個類對應一個表
  • 3.一個對象對應一條記錄
  • 4.一個屬性對應一個字段

4.目的:編碼

  • 1.當在項目中建立一個類時就根據類型的信息自動生成表
    • 1.使用元類來控制類的建立過程
    • 2.經過init方法,來獲知類即將建立,生成一個建表語句
create tabel user(id int primary key auto_increment, name char(20), psw char(20), vip tinyint default 0, extra float, utype tinyint defatult 0, islock tinyint default 0)
    
# o 表示False  1表示True
# utype字段,0表示用戶,1表示管理員
  • 2.當咱們建立一個對象時並保存時就根據對象的信息自動生成一條記錄
    • 給對象增長存儲方法
  • 3.當咱們要修改某一個對象的屬性時,自動生成修改的語句
    • 給對象提供一個更新方法
  • 4.當要刪除的時候,自動生成刪除記錄的語句
    • 給對象提供一個刪除方法
  • 5.當咱們須要獲取某一類的數據時,自動生成查詢語句並將查詢結果轉爲對象
    • 給類提供一個用於獲取對象的方法

3、瞭解

1.ORM的概念

# 1.讓咱們從O/R開始。字母O起源於"對象"(Object),而R則來自於"關係"(Relational)。幾乎全部的程序裏面,都存在對象和關係數據庫。在業務邏輯層和用戶界面層中,咱們是面向對象的。當對象信息發生變化的時候,咱們須要把對象的信息保存在關係數據庫中

# 2.當你開發一個應用程序的時候(不使用O/R Mapping),你可能會寫很多數據訪問層的代碼,用來從數據庫保存,刪除,讀取對象信息,等等。你在DAL中寫了不少的方法來讀取對象數據,改變狀態對象等等任務。而這些代碼寫起來老是重複的 

# 3.ORM解決的主要問題是對象關係的映射。域模型和關係模型分別是創建在概念模型的基礎上的。域模型是面向對象的,而關係模型是面向關係的。通常狀況下,一個持久化類和一個表對應,類的每一個實例對應表中的一條記錄,類的每一個屬性對應表的每一個字段 
    
# 4.ORM技術特色: 
#   4.1 提升了開發效率。因爲ORM能夠自動對Entity對象與數據庫中的Table進行字段與屬性的映射,因此咱們實際可能已經不須要一個專用的、龐大的數據訪問層

#   4.2 ORM提供了對數據庫的映射,不用sql直接編碼,可以像操做對象同樣從數據庫獲取數據

2.ORM的優缺點

# ORM的缺點是會犧牲程序的執行效率和會固定思惟模式: 
    
#   1.從系統結構上來看,採用ORM的系統通常都是多層系統,系統的層次多了,效率就會下降。ORM是一種徹底的面向對象的作法,而面向對象的作法也會對性能產生必定的影響

#   2.在咱們開發系統時,通常都有性能問題。性能問題主要產生在算法不正確和與數據庫不正確的使用上。ORM所生成的代碼通常不太可能寫出很高效的算法,在數據庫應用上更有可能會被誤用,主要體如今對持久對象的提取和和數據的加工處理上,若是用上了ORM,程序員頗有可能將所有的數據提取到內存對象中,而後再進行過濾和加工處理,這樣就容易產生性能問題 

#   3.在對對象作持久化時,ORM通常會持久化全部的屬性,有時,這是不但願的 

#   4.但ORM是一種工具,工具確實能解決一些重複,簡單的勞動。這是不能否認的。但咱們不能期望工具能一勞永逸的解決全部問題,有些問題仍是須要特殊處理的,但須要特殊處理的部分對絕大多數的系統,應該是不多的
相關文章
相關標籤/搜索