Powered by SmartDoc

モデルファイル

モデルの定義はYAMLで記述します。1つのアプリケーションで複数のモデルファイルを使うこともできます。異なるデータベースを扱う場合は、データベース別にモデルファイルを作成してください。

データベーススキーマからモデルファイルを自動的に生成する

TapKitをインストールすると、ライブラリと同時にmodelerコマンドがインストールされます。modelerはデータベーススキーマからモデルファイルを生成する対話型のツールです。アダプタ情報やエンティティなどをマッピングし、リレーションシップも生成します。

usage: modeler [-h|--help] adapter filename
% ./modeler MySQL employee.yaml
modelerコマンドの引数
引数 説明
-h, --help ヘルプを表示する。
adapter アダプタ名。
filename 生成するモデルのファイル名。

modelerを実行すると、データベースの接続情報を入力するプロンプトが表示されます。

% modeler MySQL model.yaml
Login database with DBI
URL: [dbi:Mysql:examples]
Username: [mysql]
Password: [mysql]

ログインできれば、選択可能なテーブルが表示されます。

Selectable tables - COMPANY, EMPLOYEE, EMPLOYEE_PROJECT, PROJECT, ...
(If you want to select the all tables, input 'all')

続けてマッピングしたいテーブルをカンマで区切って選択します。すべてのテーブルを選択するときはallを入力してください。

Select tables (separate table names with comma): [COMPANY, EMPLOYEE]
Create model.yaml

アダプタ

アダプタの設定

データベースドライバの設定です。すべて必須項目です。

アダプタの設定項目
設定項目 説明
adapter_name データベースとの接続に使用するアダプタ名。MySQL, PostgreSQL, OpenBase, CSVのいずれかを指定する。
connection データベースと接続するときに使う情報。
entities マッピングするエンティティのリスト。詳細は「エンティティ」を参照のこと。

接続に関する設定

connectionにはデータベースの接続に関する設定を記述します。何を設定するのかは各アダプタによって異なります。詳細は「アダプタ」を参照してください。

接続に関する設定項目
設定項目 説明
url 接続するデータベースのアドレス。DBIを使うアダプタ(MySQLアダプタとPostgreSQLアダプタ)で使う。
user ユーザー名。
password パスワード。
encoding 文字コードのエンコーディング。これを設定すると、データのフェッチや更新時に自動的に文字コードの変換を行う。jis, sjis, eucから選択する。「文字コードのエンコーディング」を参照。

標準データ型

デフォルトでは以下のデータ型がサポートされています。データベース固有のデータ型は各アダプタでサポートされますが、中には各アダプタで異なるオブジェクトにマッピングされるデータ型もあります。

標準データ型
マッピング データ型
String char, character, varchar, char varying, character varying, nchar, national char, national character, national character varying, bit, bit varying
Integer int, integer, smallint, interval
Float numeric, decimal, dec, float, real, double presicion
TapKit::Date date
TapKit::Time time
TapKit::Timestamp timestamp

エンティティ

エンティティ(テーブル)に関する設定です。relationship以外は必須項目です。

エンティティの設定項目
設定項目 説明
name エンティティ名。TapKitからはこの名前でアクセスする。
external_name データベースに登録されているテーブル名。
attributes 属性のリスト。詳細は「属性」を参照。
primary_key_attributes 主キーの属性のリスト。複数設定できるが、TapKitでは複合主キー値の自動生成はサポートしない。
class_properties クラス属性のリスト。このリストに設定していない属性のデータにはアクセスできない。
relationship リレーションシップのリスト。詳細は「リレーションシップ」を参照。

属性

属性(フィールド)に関する設定です。name, column_name, external_type, class_nameは必須項目です。

属性の設定項目
設定項目 設定
name 属性名。TapKitからはこの名前でアクセスする。
column_name データベースに登録されているフィールド名。
class_name データをマッピングするクラス名。String, Integer, Float, Date, Time, Timestamp, Booleanから選択する。
external_type データベースで管理されているフィールドのデータ型。サポートされるデータ型は各アダプタに依存する。
allow_null NULLの制約。falseにするとNULLの入力を許可しない。省略するとfalseに設定される。
read_only 読み込み専用の設定。trueにするとデータを変更できなくなる。
width データの長さ。データ型が文字列のときのみ有効。

Boolean

属性のclass_nameをBooleanにマッピングすると、データ行の1をtrueに、0をfalseに相互変換します。数値以外のデータ型にBooleanをマッピングすることはできません。

カスタムデータ型

属性を上記以外のクラスにマッピングすることもできます。フェッチしたデータ行はカスタムクラスに自動的に変換され、保存時にはその逆の操作が行われます。カスタムデータ型を使用するには以下の項目を設定します。

このほかにカスタムクラスには、Qualifierの条件式で比較を行うためのメソッド(==!=など)が必要です。

リレーションシップ

リレーションシップに関する設定です。name, destination, joinsは必須項目です。

リレーションシップの設定項目
設定項目 説明
name リレーションシップ名。TapKitからはこの名前でアクセスする。
destination リレーション先のエンティティ。
joins エンティティの結合のリスト。
join_semantic 結合する方法。inner(内部結合)、left_outer(左外部結合)、right_outer(右外部結合)、full_outer(完全外部結合)から選択する。省略するとinnerに設定される。
to_many リレーションシップが1対多のときtrueに設定する。省略すると1対1として扱われる。
mandatory リレーションシップが必須かどうかを設定する。trueにするとリレーションシップをNULLに設定できなくなる。
delete_rule オブジェクトを削除したときのリレーションシップの扱いを設定する。

結合の設定

参照元と参照先の属性を指定し、リレーションシップの結合の設定を行います。

結合の設定項目
設定項目 説明
source リレーション元の属性。
destination リレーション先の属性。

リレーションを持つオブジェクトの削除

リレーション元のオブジェクトを削除するとき、リレーション先のオブジェクトをどうするか設定します。

リレーションを削除する規則
規則 説明
nullify 削除するオブジェクトに対するリレーションシップをすべてnull(nil)にする。
cascade 関連するオブジェクトをすべて削除する。
deny リレーション先にオブジェクトが存在するとき、オブジェクトを削除できないようにする。リレーション先のオブジェクトをすべて削除しておかないと、オブジェクトを削除できない。