4D v17 を紹介します。 ORDAORDAは、4D開発者に新しい可能性の世界を開く、4Dの大きな進化です。ORDA の詳細とその利点については、この投稿をチェックして、ORDA があなたの仕事のやり方をどのように変えるかを見てください。ORDA の探求をガイドするために、e’ve prepared は、 core のコンセプトと関連する機能に完全に特化した一連のブログポストを用意しています。このブログ記事では、ORDA を使ってデータベース上でCRUD 操作を行う方法について詳しく説明します。 CRUDは、データに対して実行可能な 4 つの基本操作の頭文字をとったものです。作成、読み込み、更新、削除です。
はじめに
ORDAでは、データはデータストアという抽象化レイヤーを介してアクセスされます。データストアは、オブジェクトを通してデータベースとそのデータへのインターフェイスを提供するオブジェクトです。例えば、テーブルはデータクラスオブジェクトにマップされ、フィールドはデータクラスの属性であり、レコードはエンティティである。new dsコマンドは、アプリケーション・データストアの参照を返します。もっと詳しく知りたい場合は、ドキュメントの概要記事を参照してください。
ORDAの 機能を理解するために、様々な用語や概念の定義と一緒に用語集を用意しました。
CRUD操作
ORDAでは、作成、更新 、 削除の 操作は、現在の選択項目や 現在のレコードに対してではなく、エンティティに対して行われます。これにより、アクションを実行するために、複数のエンティティのセットを(同時に)管理することができます。
作成
Create 操作は、new()メソッドで新しいエンティティをインスタンス化し、そのエンティティを save()メソッドで保存します。
C_OBJECT($status;$employee)
$employee :=ds.Employee.new()// Create a new employee
$employee .lastName:="Smith"// Set the last name to "Smith"
$status :=$employee.save()// Save employee
更新
Update 操作は、エンティティに対して同じ save()メソッドで行います。
C_OBJECT($status;$employee)
)
$employee :=ds.Employee.query("lastName=:1"; "Smith").first()// Get first employee whose name is "Smith"
If ($employee#Null)
$employee .lastName:="Mac Arthur"// Set the last name to "Mac Arthur"
$status :=$employee.save( // Save employee
End if
削除
Delete 操作は、エンティティまたはエンティティ選択に対して drop() メソッドを使って行います。
C_OBJECT($status;$employee)
)
$employee :=ds.Employee.query("lastName=:1"; "Mac Arthur").first()// Get first employee whose name is "Mac Arthur"
If ($employee#Null)
$status :=$employee.drop( // Delete the employee data but the $employee entity remains in memory
End if
エンティティのロック
ORDAでは、悲観的なロッキングを使用することができます。古典的なコーディング方法では Lockedコマンドは、テーブルの現在のレコードがロックされているかどうかをチェックするために使用されます。
ORDAでは 、 更新する前にエンティティをロックする必要があります。この lock()メソッドは、ロックが成功したかどうかを示す結果を返します。エンティティが更新されたら、それをunlock()メソッドでロックを解除する必要があります。
C_OBJECT($employee;$statusLock;$statusSave;$statusUnLock)
$employee :=ds.Employee.query("lastName=:1"; "Wates").first()
If ($employee#Null)
$statusLock :=$employee.lock()// Lock entity
If ($statusLock.success)// The entity has been successfully locked
$employee.lastName:="Mac Arthur"// Set name to "Mac Arthur"
$statusSave :=$employee.save()// Save employee
$statusUnLock :=$employee.unlock()// Unlock entity
End if
End if
ORDAでは、楽観的 ロックと悲観的ロックのどちらを使用するかを選択できるのが良い点です。詳細は、両方のロックモードについて専用の投稿で説明します。ご期待ください。