SQLite和CoreData資料庫的比較,sqlitecoredata

來源:互聯網
上載者:User

SQLite和CoreData資料庫的比較,sqlitecoredata
1. SQLite資料庫

  • sqlite資料庫操作的基本流程是, 建立資料庫, 再通過定義一些欄位來定義表格結構, 可以利用sql語句向表格中插入記錄, 刪除記錄, 修改記錄, 表格之間也可以建立聯絡。

  • 這些操作都需要使用SQL語句去實現,感覺操作很直接。如果先前有一點資料庫和SQL基礎的話,寫起來會感覺很親切,都是一些資料庫操作的語句。但是當操作變多之後,語句越來越多,就很煩,代碼比較多,看起來也會混亂一些。

  • 如果想要詳細瞭解,可以看iOS學習36資料處理之SQLite資料庫
2. CoreData資料庫
  • CoreData.framework :iOS中提供了對原始SQLite資料庫API訪問的封裝,通過這個framework來管理資料緩衝和持久資料要比使用SQL語句操作SQLite資料庫簡單和方便許多。

  • 機制:通過framework來儲存和查詢資料只需要使用framework提供的類就可以,你可以完全使用對象的形式來管理你的資料以及資料之間的關係,framework已經很好地將資料庫表和欄位封裝成了對象和屬性,表之間的一對多、多對多關係則封裝成了對象之間的內含項目關聯性.

  • 通過 relationship 來表示:

  一對多時:設定為 properties 項選中 Optional, Plural 選項 To-Many Relationship 選中;

  多對一反向關係時:properties 項選中 Optional, Count 項選中Minimun 和 Maximun 並分別設定其值為1;

  如果想要詳細瞭解,可以看iOS學習37資料處理之CoreData

3. 比較

 1> CoreData的類與SQLite資料庫中的文字描述做一個對應:

  NSEntityDescription --> 表格結構
  NSManagedObjectModel --> 資料庫中所有表格和他們的聯絡
  NSPersistentStoreCoordinator --> 資料庫存放方式
  NSManagedObjectContext --> 資料庫操作
  NSFetchRequest --> 查詢語句
  NSManagedObject --> 表格的記錄

 2> 下面我們可以詳細的看看CoreData的類 

  • NSEntityDescription、NSManagedObjectModel

   NSEntityDescription 用來定義表格結構, 所以你就可以理解 NSManagedObjectModel 中的 setEntities:(NSArray *)entities 函數大概有什麼用了 . 通常, 定義 model , 是用檔案 CoreData.xcda*****odel , 可以圖形化的操作. 這類似用nib來建立介面.

  • NSPersistentStoreCoordinator

   這個類的對象通常用 NSManagedObjectModel 的對象來初始化, 這個類抽象出不同的存放方式, 最經常用的是 NSSQLiteStoreType.

  • NSManagedObjectContext

   這個類的對象又用 NSPersistentStoreCoordinator 的對象來初始化, 它裡面有些方法來添加, 刪除 NSManagedObject

  • NSFetchRequest

   通常用 NSEntityDescription 來構造查詢, 也就指定查詢那個表格, 另外可以指定排序.

  •  NSFetchedResultsController

  NSFetchedResultsController 只是又封了一下, 和 NSFetchRequest 合起來使用, 方便取資料, 另外和 NSManagedObjectContext 關聯, 當資料庫發生變化的時候收到通知.

 3> 特點比較

  • CoreData的強大之處就在於這種關係可以在一個對象更新時,其關聯的對象也會隨著更新,相當於你更新一張表的時候,其關聯的其他表也會隨著更新。

  • Core Data的另外一個特點就是提供了更簡單的效能管理機制,例如,使用NSFetchedResultsController類,你不用使用SQL的Limit而是使用NSFetchRequest類的setFetchBatchSize()就可以限制查詢記錄的總數,而NSFetchedResultsController類神奇的地方在於需要擷取更多記錄的時候,這個類會自動更新其緩衝。

  • 對於多表查詢上相對來說,CoreData 沒有 SQL 直觀,但 CoreData 的功能還是可以完成相關操作的,但是對於類似外串連,左串連等操作,在CoreData中就顯得無力。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.