属性とは、リレーショナルデータベース内における最小の保存セルです(リレーション属性も参照してください)。データクラス属性とエンティティ属性を混同しないようにしてください:
- データクラスオブジェクト内では、各プロパティは、対応するテーブルの対応するフィールドへとマップするデータクラス属性です(同じ名前と型)。
- エンティティオブジェクト内では、エンティティ属性は対応するデータストア属性の値を格納するプロパティです。
注: 属性 と プロパティ は似た概念です。"属性"はデータを保存するデータクラスプロパティを指定するのに使われるのに対し、"プロパティ"はより一般的な概念でオブジェクト内で保存されるデータを定義します。
属性パスとは、あるデータクラスあるいはエンティティ内の属性へのパスです。プロパティパスも参照してください。
データクラスとは、データを記述するオブジェクトモデルです。データストアによって提供されるデータベース内のテーブルはデータクラスを通して管理されます。データストから提供されたデータベース内の各テーブルは、同じ名前を持つ対応するデータクラスを持ちます。テーブルの各フィールドは、データクラスの属性となります。
データクラスは単一のデータストアにリレートされています。
詳細な情報については、データクラスを参照してください。
データストアとは、ORDA によって提供されるインターフェースオブジェクトです。データストアはデータベースを参照し、データへのアクセスを提供します。ds コマンドによって返されるメインデータベースは、データストア (メインデータストア) として利用可能です。
データストアは以下のものを提供します:
- 4D データベースへの接続
- データベースを扱うためのデータクラスのセット
利用できるデータベースは、スタンダロンまたはクライアント/サーバーで開いているメインの 4D データベース (メインデータストア)、および REST リソースとして公開された 4D Server データベースです (リモートデータストア)。
コード内で扱うにあたっては、データストアはオブジェクトであり、定義されている全データクラスをプロパティとして持ちます。データストアは単一のデータベースのみを参照しますが、複数のデータベースをアクセスするために複数のデータストアを開くことも可能です。
注:
- データストアは単一のプライマリーキーを持つテーブルの身を参照します。プライマリーキーがないテーブル、あるいは複合プライマリーキーを持つテーブルは参照されません。
- BLOB 型属性はデータストアでは管理されません。
詳細な情報については、データストアを参照してください。
ディープコピーとは、あるオブジェクトとそこに格納される全ての参照の複製です。ディープコピーのあと、複製されたコレクションには、元の全ての要素のコピーされた要素や新しい参照が格納されています。シャロウコピーも合わせて参照してください。
ds は、データストアのオブジェクト参照を返す4D ランゲージコマンドです。この参照は 4D のメインデータベースが提供するデータストアに合致します。
エンティティとは、データクラスモデルに対応するオブジェクトです。エンンティティには、データクラスと同じ属性が格納されます。
エンティティは、テーブルのレコードがデータストア内のデータクラスに合致するのと同様、データクラスのインスタンスとして見ることもできますしかしながら、エンティティはリレートされたデータも格納しています。エンティティの目的は、データを管理(作成、更新、削除)することです。
詳細な情報については、エンティティを参照してください。
エンティティセレクションとはオブジェクトです。データストアをクエリすると、エンティティセレクションが返されます。エンティティセレクションとは同じデータクラスにリレートされたエンティティへの参照のセットのことです。
エンティティセレクションには以下のものが格納されます:
- 0 からX までのエンティティ参照のセット
- length プロパティ(常に有り)
- queryPlan および queryPath プロパティ(クエリ時に要求した場合)
エンティティセレクションは空であることもあります。
詳細な情報については、エンティティセレクションを参照してください。
エンティティは参照として管理されているため、データは必要なときにのみロードされます。つまりコードからアクセスしたとき、あるいはインターフェースウィジェットを通してアクセスしたときなどです。この最適化原理は、レイジーローディングと呼ばれています。
開かれている 4Dデータベース (スタンダロンまたはクライアント/サーバー) に対応する データストア オブジェクト。メインデータストアは ds コマンドによって返されます。
データストア、データクラス、エンティティセレクション、エンティティなどのORDA オブジェクトは、オブジェクトのクラスを定義します。これらのオブジェクトはオブジェクトを直接操作するための特定のメソッドを提供しています。これらのメソッドはメンバーファンクションとも呼ばれます。こういったメソッドはオブジェクトのインスタンスに呼び出すことで使用します。
例えば、query() メソッドはデータクラスのメンバーファンクションです。データクラスオブジェクトを$myClass 変数に保存した場合、以下のように書くことができます:
$myClass.query("name = smith")
このドキュメントでは、データクラス属性に保存可能な値の様々な型を指定するために、"ミックス"データ型が使用されます。以下のものが含まれます:
- 数値
- テキスト
- null
- ブール
- 日付
- オブジェクト
- コレクション
- ピクチャー(*)
(*) ピクチャー型はentitySelection.max( ) などの統計型メソッドではサポートされていません。
"オプティミスティック・ロック"モードでは、エンティティは更新されるまでは明示的にはロックされていません。各エンティティは、そのエンティティがディスクに保存されるたびに自動でインクリメントされる内部スタンプを持っています。entity.save( ) および entity.drop( ) メソッドは(メモリ内に)ロードされたスタンプと、ディスク上のエンティティのスタンプが合致しない場合、あるいはエンティティがドロップされている場合にはエラーを返します。オプティミスティック・ロックはORDA 実装内でのみ使用可能です。"ペシミスティック・ロック"も合わせて参照してください。
ペシミスティック・ロックとは、entity.lock( ) メソッドを使用して、エンティティがアクセスされる前にそれがロックされることを意味します。他のプロセスからは、ロックが解除されるまでそのエンティティを更新することも、ドロップすることもできません。クラシック4D ランゲージにおいてはペシミスティック・ロックのみが利用可能です。"オプティミスティック・ロック"も合わせて参照してください。
属性 を参照してください。
注: 属性とプロパティは似た概念です。"属性"はデータを保存するデータクラスのプロパティを指すのに使用されるのに対し、"プロパティ"はより汎用的な意味合いで、オブジェクト内に保存されるデータを定義するものです。
プロパティパスとは、あるオブジェクトのプロパティへのパスです。プロパティが複数の階層にネストされている場合、各階層はドット(".")によって区切られます。
リレートされたデータクラスとは、リレーション属性によってリンクされたデータクラスのことをさします。
リレーション属性は、データクラス間のリレーション(1対NおよびN対1)を概念化するものです。
- N対1リレーション(データクラス1はデータクラスBのオカレンスを参照する): リレーション属性はデータクラスA内で利用可能で、データクラスBの一つのインスタンスを参照する
- 1対Nリレーション(データクラスBのオカレンスがデータクラスAの複数のオカレンスを参照する): リレーション属性はデータクラスB内で利用可能で、データクラスAの複数のインスタンスを参照する
データクラスは再帰的なリレーション属性を持つことができます。
エンティティ内では、リレーション属性の値はエンティティあるいはエンティティセレクションとなります。
リレートエンティティはデータクラス内のリレーション属性のインスタンスとしてみることができます。
エンティティセレクションは、対応するデータクラス内で定義されたリレーション属性に応じて、リレートエンティティのことを意味することもあります。
4D または (HTTP経由で利用可能な) 4D Server上で開かれている、REST リソースとして公開された 4D データベース。このデータベースは他のマシンにおいて データストア としてローカルに参照することができ、その際には割り当てた locaID で識別されます。リモートデータストアは ORDA の概念 (データストア、データクラス、エンティティセレクション等) を使って利用できます。利用にあたってはライセンスが消費されます。
4D アプリケーションが リモートデータストア に接続すると、4D Server (HTTP) 上では セッション が作成されます。セッション cookie が生成され、ローカルデータストア ID と紐づけられます。
新規セッションが開始されるごとに、ライセンスが消費されます。セッションが閉じられると、ライセンスは解放されます。
アクティビティのないセッションはタイムアウト後に自動的に終了します。デフォルトのタイムアウトは48時間で、任意に設定することができます (最少時間は60分)。
シャロウコピーは、要素の構造のみを複製し、同じ内部参照を保持します。シャロウコピーのあと、二つのコレクションは同じ個別の要素を共有します。ディープコピーも合わせて参照してください。
"オプティミステック" ロックテクノロジーにおいて使用されるものです。全てのエンティティにはスタンプと呼ばれる内部カウンターがあり、エンティティが保存されるたびにインクリメントされていきます。エンティティ内のスタンプとディスク上に保存されているエンティティのスタンプを自動的に比較することで、4D は同じエンティティへの書き込みの衝突を防いでいます。