menu
書いてる野郎
orebike@gmail.com
乱暴に言うとテーブルの1レコードに相当するモノをJava側にマッピングするためのインスタンスのためのクラスである。
まず対応するテーブルがこのようである場合
CREATE TABLE `hoge`.`customer` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NULL, `age` INT NULL, PRIMARY KEY (`id`));
このように作成する。
@Entity public class Customer { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; private String name; private Integer age; protected Customer() {} public Customer(String name, Integer age) { this.name = name; this.age = age; } @Override public String toString() { return String.format( "Customer[id=%d, name='%s', age='%d']", id, this.name, this.age); } }
このように作ると。名前から類推して勝手にマッピングしてくれる予定。
つまり、新規作成、更新、削除の処理の前後に特定のクラスを指定することで処理を割り込ませることができる。
これをエンティティリスナーと言う
そいう場合は Table アノテーションでズバリ指定する
@Entity @Table(name = "hoge") public class piyo { }
Transient(過渡的な) アノテーションをつける
@Transient List<String> hogeList;
S2JDBC とかにある超便利機能で、Entity のフィールドに別 Entity を持たせると、その Entity の対応するテーブル同士を結合したクエリを投げた場合に結果を巧妙に詰め替えてくれるというモノ。
残念ならが Doma にはそういう機能は無いらしく Dao も複雑なロジックは書けないので、そういうことやんなというフレームワークからのメッセージである。やりたい場合は、結合結果の全フィールド受ける新しいフィールドを作ってやってねという話のようだ。
当然ながら OneToMany も不可能である。