ORDAは 4D v17の大きなイノベーションです。このため、私たちはブログ記事のシリーズ全体をORDAに捧げています。ORDAには、古典的なアプローチとは全く異なる独自のコンセプトがありますが、既存のコードにORDAを混ぜることは可能です。
簡単に言うと、このブログ記事では、エンティティ選択からテーブルの現在の選択を更新 する方法と、テーブルの現在の選択からエンティティ選択を取得 する方法を紹介します。これにより、既存の4DコードにORDAの 概念を段階的にスムーズに取り入れる ことができます。
はじめに
ORDAでは、データはデータストアという抽象化されたレイヤーを通してアクセスされます。データストアは、オブジェクトを通してデータベースとそのデータへのインターフェイスを提供するオブジェクトです。また、ORDAでは、各テーブルはデータクラスとマッピングされていることに留意してください。
データクラスに関連するエンティティセレクションを作成したら、対応する[テーブル]の現在のセレクションを USE ENTITY SELECTION コマンドで更新できます。また、[Table]に現在の選択範囲があれば、対応するデータクラスに関連するエンティティ選択範囲を Create entity selectionコマンドで取得できます。
ORDAの 機能を理解するために、様々な用語や概念、そしてその定義をまとめた用語集を用意しました。
コード例
エンティティ選択からの現在の選択
以下のコードでは、$entitySelection エンティティの選択は、実際に対応する Employeeこのデータクラスは、実際には同じ名前の [Employee] テーブルに対応しています。コマンドは、テーブルの現在の選択を更新します。 USE ENTITY SELECTIONコマンドは、それに応じてテーブルの現在の選択を更新します。
C_OBJECT($entitySelection)
$entitySelection :=ds.Employee.query("lastName=:1"; "R@")
// The current selection of the [Employee] table is replaced according to the content of $entitySelection
USE ENTITY SELECTION (
$entitySelection)
//... Go on with your classic 4D code ...
PRINT SELECTION (
[Employee])
//...
現在の選択範囲からエンティティを選択
ここでは、[Employee] テーブルに対してクエリを実行した後、現在の選択範囲が更新されています。コマンドは Create entity selection() コマンドは、$entitySelection エンティティセレクションを作成します。作成されたエンティティ選択は、[Employee] テーブルに関連しています。 Employee dataclass.
C_OBJECT($entitySelection)
// The current selection of the [Employee] table is updated after the query
QUERY ([Employee])
// $entitySelection is created from the current selection of the [Employee] table
$entitySelection :=Create entity selection([Employee])