4.7. JSON Object 型の利用
従来、データベースへ永続化可能なエンティティのフィールドは、String、Number、Date等の基本的なデータ型だけでしたが、
以下のような複雑なクラスもサポート可能になりました。
1. POJO
プレーンな Java オブジェクトをひとつのフィールドとして DB に格納します。
Publicフィールドおよびpublic getter, setter に対応したフィールドが永続化対象です。
このクラス内部で、さらに拡張されたクラスを含めることが可能です。
public static class Address {
    public String pref;
    public String city;
    public String street;
    public String building;
}

// エンティティクラス
public static class EmployeeInfo extends Employee {
    public Integer id;
    public String name;
        :
    public Address address;
}
2. 配列
String[], Integer[] 等、Java 標準の配列型を DB に格納します。
1の様な POJO を配列として指定することも可能です。
多次元の配列にも対応しています。
// エンティティクラス
public static class EmployeeInfo extends Employee {
    public Integer id;
    public String name;
        :
    public String[] mailAddress;
}
3. java.util.List
ArrayList など java.util.List のサブクラスを DB に格納します。
// エンティティクラス
public static class EmployeeInfo extends Employee {
    public Integer id;
    public String name;
        :
    public ArrayList<String> mailAddress;
}

1の様な POJO を List に格納することも可能です。
// エンティティクラス
public static class EmployeeInfo extends Employee {
    public Integer id;
    public String name;
        :
    public ArrayList<Address> address;
}
4. java.util.Map
HashMappなどjava.util.MapのサブクラスをDBに格納します。
// エンティティクラス
public static class EmployeeInfo extends Employee {
    public Integer id;
    public String name;
        :
    public HashMap<String, String> family;
}
※MapのキーはString型のみです。
データベースへの格納
以上のクラスは、LSJにより自動的にSON文字列に変換され、データベースへ永続化されます。
また読み込みの際は自動的にJavaオブジェクトへと復元されます。

これらが格納されるDBカラムの実際のデータ型はVARCHAR等の可変長文字列です。
SchemaUpdatorは上記クラスが指定された場合、自動的にデータベースカラムをVARCHARに指定しますが、
DDLによりスキーマ定義する際は、VARCHAR等を指定してください。
JSON関連のユーリティティ
jp.littlesoft.soja.LSJson クラスを使用するとエンティティクラスを簡単に JSON 文字列へシリアライズすることが出来ます。
SQL<Employee> selectEmp = new SQL<Employee>() {{
    select();
}};
List<EmployeeInfo> empList = selectEmp.execute(conn);
String result = LSJson.serialize(empList, true);

JSON 文字列からの復元も同様です。
List<Employee> list = (List<Employee>)LSJson.deserialize(result);