id; String name; int age; } CREATE TABLE person ( id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT NOT NULL ); 6 Java のエンティティクラス定義 DB のテーブル定義 • マッピングはアノテーションで行う • 次項以降では次のマッピング定義が存在することを前提とする
age = 0 ベースとなる SQL (コメントを全て除去したもの) コード例 8 • テンプレートを使って SQL を組み立てる • 利点:あらゆる SQL の組み立てが可能 • 制約:テンプレート間で検索条件を共通化する仕組みはなし -- name と age がどちらも非 null の時 select id, name, age from person where name = ? and age = ? -- name が非 null、age が null の時 select id, name, age from person where name = ? -- name が null、age が非 null の時 select id, name, age from person where age = ? -- name と age がどちらも null の時 select id, name, age from person 生成されるSQL(4パターン)
制約:複雑な SQL は Java コードが冗長化しやすい -- name と age がどちらも非 null の時 select id, name, age from person where name = ? and age = ? -- name が非 null、age が null の時 select id, name, age from person where name = ? -- name が null、age が非 null の時 select id, name, age from person where age = ? -- name と age がどちらも null の時 select id, name, age from person 生成されるSQL(4パターン)