Core Dataにハマる(前編)

2012年2月20日 Posted by Kinotune

前回エントリから早2週間が経ってしまいました(^^;。

さて2週間の間何をやっていたかといいますと、実は「Core Data」の勉強です。これはこれから作ろうと思っているプログラム内でデータの保存を行う必要があるので、避けては通れない部分・・・なのですが、結果相当ハマりました。

◎RDBMSとの違いに悩む

そもそも「Core Dataって、ネット上にいろんなチュートリアルもあるのにどこが難しいの?」となる訳ですが、一言で書くとRDBMSのとの違いが分からない・・・つまり、RDBMSの概念とCore Dataの概念とを比較させた場合、どの部分がどこに該当するのかが分からなかったのです。

 

RDBMSを使った開発の場合だと、最初にDBとの接続情報を保持するConnectionオブジェクトがあって、その下にテーブルを保持するRecordsetオブジェクトがあります。テーブルを取得する際は抽出条件(SQL)を引数としてOpenメソッドを使って検索結果を取得します。また、挿入、更新、削除といった処理は、やはりSQLを引数としてExcuteメソッドを呼びます。・・・というのが、言語、ミドルウェア、RDBMSの種類に問わず大体共通した使い方だと思います。

 

[RDBMSに対するデータベースアクセス]

Connectionオブジェクト:DBとの接続情報を保持する。DBのIPアドレスやらDBのインスタンス名を設定してConnectionを確立する

Recordsetオブジェクト:検索結果テーブルを保持する。検索結果テーブルは列と行で構成される

Openメソッド:テーブル名や”SELECT~”で始まるSQL文を引数として呼び出す。検索結果としてRecordsetオブジェクトが返ってくる

Executeメソッド:挿入(INSERT)、更新(UPDATE)、削除(DELETE)を行うSQL文を実行する

Begin、Commit、Rollback:INSERT/UPDATE/DELETEを行う際、データベースの整合性を保つ為のトランザクション処理

※言語、ミドルウェア、RDBMSによっては名称や方法が異なりますがだいたい同じです。(ものすごい大雑把なまとめ方ですけど。)

 

Core Dataの場合もバックエンドはSQLiteというデータベースを使います。このデータベースにアクセスする為のフレームワークがCore Dataですが、上記のデータベースアクセス手法とは異なります。

 

[RDBMSに対するデータベースアクセスとCore Dataの比較]

Connectionオブジェクト→Core Dataが呼び出すSQLiteはアプリケーション組み込み型のデータベースの為、「Connectionを確立する」という概念はおそらくありません。ただし、フレームワークの上位にあって、データの抽出や挿入/削除を行うという意味ではNSManagedObjectContextオブジェクトが該当します。

RecordsetオブジェクトNSFetchRequestオブジェクト。検索結果となるNSManagedObject(またはそのサブクラス)を保持する。

OpenメソッドNSManagedObjectContext executeFetchRequestメソッド。(NSFetchedResultsControllerを使用した場合は、performFetchメソッドを使う。)

Executeメソッド→INSERT/DELETEはそれぞれNSManagedObjectContext InsertObject/DeleteObject。UPDATEの場合は検索結果となるNSManagedObjectの値を直接書き換える。

Begin、Commit、Rollback → NSManagedObjectへの挿入、更新、削除を反映させるにはNSManagedObjectContext saveメソッドを使う。変更前の状態に戻すにはNSManagedObjectContext rollbackメソッドを使う

 

おそらく一番異なるところは、RDBMSに対するデータベースアクセスの結果セットが列と行で構成されるテーブルに対し、Core Dataの場合は、複数のオブジェクト(NSManagedObject)が返されるというところでしょうか。ただし、NSManagedObjectは複数のKeyを持つので、Keyを「列」、NSManagedObject一つ一つを「行」と考えるとよいと思います。

 

 

・・・思ったより長くなりそうなので次回に続きます。

※勉強中の為、間違っているところや説明が足りないところがあると思います。その場合はご指摘いただくと助かります。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 
  プロフィール  PR:無料HP  大宮自動車教習所  請求書買取 リスク  お見合い結婚  トキコ  スタッドレスタイヤ 通販  タイヤ カローラフィールダー 新品  環境 専門学校  ZERO SPORTS  不動産 運用  八千代 リフォーム  株プロフェット 口コミ  クルマパーツ 買取 大分市  バイアグラ 評判