サンプルのスキーマ

<databases>
  <database name="db1" javaPackage="org.asyrinx.joey.gen.sample1.${packageType}">
    <table name="party" label="パーティ" >
      <column name="party_id" required="true" type="BIGINT" primaryKey="true" readonly="true" label="パーティID"/>
      <column name="party_code" required="true" type="VARCHAR" size="30" label="パーティコード" unique="true"/>
      <column name="name" required="true" type="VARCHAR" size="50" label="名前" indexed="true"/>
      <column name="name_kana" required="false" type="VARCHAR" size="50" label="カナ名" indexed="true"/>
    </table>
    <table name="party_relation_type" label="パーティ関係種別">
      <column name="party_relation_type_id" required="true" type="BIGINT" primaryKey="true" readonly="true" 
        label="パーティ関係種別ID" />
      <column name="name" required="true" type="VARCHAR" size="50" label="関係種別名" />
    </table>
    <table name="party_relation" label="パーティ関係">
      <column name="party_relation_id" required="true" type="BIGINT" primaryKey="true" label="パーティ関係ID" />
      <column name="owner_party_id" required="true" type="BIGINT" label="関係元パーティID" fk="party.party_id"/>
      <column name="target_party_id" required="true" type="BIGINT" label="関係先パーティID" fk="party.party_id"/>
      <column name="party_relation_type_id" required="true" type="BIGINT" visible="false" label="関係種別ID" 
        fk="party_relation_type.party_relation_type_id"/>
    </table>
    <table name="app_user" javaName="ApplicationUser" label="システムユーザ" extends="party">
      <column name="login_id" required="true" type="VARCHAR" size="30" label="ログインID"/>
      <column name="passwords" javaName="password" required="false" type="VARCHAR" size="30" label="パスワード"/>
    </table>
  </database>
</databases>

タグ毎に説明しますね。

databases

ルートです。特に何も書かなくてOK。


database

データベースに該当するタグです。

name

名前です。

javaPackage

生成されるjavaソースコードのパッケージを指定します。${packageType}は、クラスの種類によって変わります。エンティティならentity, DAOならdaoという感じで。


table

テーブルに該当するタグです。

name

名前です。

label

表示名*1です。

javaName

生成されるJavaソースコードで使用される名前です。

extends

継承元のテーブルを指定します。

column

name

名前です。

javaName

生成されるJavaソースコードで使用される名前です。

required

必須項目かどうかを指定できます。

type

カラムの種類を表します。名前はjava.sql.Typesの定数名と同一です。

size

カラムのサイズをしてします。

label

表示名*2です。

primaryKey

カラムが主キーであるかどうかを指定します。

fk

外部キーとして参照するカラムを指定します。



他にもテーブルの要素として、などがありますが、今回は割愛します。

*1:現バージョンでは関係ありませんが、TapestryやSwingなどのViewを生成する場合に使用します

*2:現バージョンでは関係ありませんが、TapestryやSwingなどのViewを生成する場合に使用します