aurelius-mapping について
aurelius-mappingは、TMS AureliusでDelphiクラスをリレーショナルデータベースに対応付けるためのガイドです。自動マッピング、属性による明示的な指定、関連オブジェクトのライフサイクル規則を扱います。
主な機能
- 01新規スキーマで自動マッピング
- 02既存スキーマで属性を明示
- 03必要な箇所だけ既定値を変更
- 04関連とコレクションのライフサイクル管理
- 05リンカーによる除去を防ぐエンティティ登録
活用シーン
- 01新規スキーマへのDelphiクラスの対応付け
- 02既存テーブルや列名との整合
- 03遅延関連とコレクションの設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tmssoftware/ skills --skill aurelius-mappingインストール後、Claude Code で/aurelius-mappingを入力して読み込まれたか確認します。
同梱ファイルreferences/mapping.md
詳細
Aurelius マッピング
TMS Aurelius 属性を使って Delphi クラスをリレーショナルデータベースにマッピングします。すべての属性はユニット Aurelius.Mapping.Attributes で宣言されています。
属性の構文、オプションの表、コード例については、references/mapping.md を参照してください。以下のガイダンスでは、リファレンスで強調されていない判断基準とルールを説明します。
アプローチ
新規スキーマ(既存のテーブルがない場合): デフォルトでは [Automapping] を使用します。フィールドの命名規則からテーブル名、カラム名、NULL 許容性、識別子を推測するため、単純なケースでは追加の属性は必要ありません。
レガシースキーマまたは固定スキーマ: 明示的な属性([Table]、[Column]、[Id] など)を使い、既存のカラム名とテーブル名に正確に合わせます。
混在する場合: オートマッピングはすべてを適用するか、まったく使わないかの二者択一ではありません。デフォルトを上書きする必要がある箇所だけに明示的な属性を追加します。
ユーザーから指定がない場合は、質問するか、文脈から判断します(既存のテーブル定義がある場合 → 明示的な属性、グリーンフィールドの場合 → オートマッピング)。
重要なルール
以下は特によくある間違いです。例外なく守ってください。
オブジェクトのライフタイム — 関連付け
- 親のコンストラクターまたはデストラクターで、多対一の関連オブジェクトを作成または解放しないでください。関連するエンティティオブジェクトのライフタイムは Aurelius が管理します。
- 即時読み込みの関連付けには通常の
Tフィールド型を使用し、遅延読み込みの関連付けにはProxy<T>フィールド型を使用します。 - 遅延読み込みの関連付けは、
FArtist.Valueを返すプロパティを通じて公開します。
オブジェクトのライフタイム — コレクション
- 親のコンストラクターとデストラクターで
TList<T>コンテナーを作成および解放します。 - リスト内の子エンティティオブジェクトを作成または解放しないでください。これらは Aurelius が管理します。
OwnsObjects = TrueのTObjectList<T>は使用しないでください。- 遅延読み込みのコレクションには、フィールド型として
Proxy<TList<T>>を使用します。コンストラクターやデストラクターでは.Valueにアクセスせず、SetInitialValue/DestroyValueを使用します。
エンティティの登録
ユニットの initialization セクションに、必ず RegisterEntity の呼び出しを追加してください。
initialization
RegisterEntity(TCustomer);
RegisterEntity(TCountry);
これにより、Delphi リンカーによってクラスが削除されるのを防げます。エンティティクラスがコードから直接参照されない場合があるサーバーアプリケーション(XData サービスなど)では、特に重要です。
リファレンス
すべての属性のシグネチャ、オプション、コード例については、references/mapping.md を参照してください。
リファレンスでは、基本的なエンティティマッピング、オートマッピングのルールと上書き、抽象エンティティ、NULL 許容フィールド、blob フィールド、多対一の関連付け(即時読み込みと遅延読み込み)、一対多の関連付け(双方向と単方向、即時読み込みと遅延読み込み)、コレクションの順序付けとフィルタリング、外部キーの命名、単一テーブル継承と結合テーブル継承、複合識別子を扱います。