○javaアプリケーション の DAO に何を使うか? Doma が良さそう。
How to use doma ? ということで、
JavaのDaoフレームワークである、Doma(ここでは Doma1 を)を導入します。
Domaは2waysql方式で、発行したSQLがわかりやすく、ローカルトランザクションをサポートしています。
大きな連続した命令を行う必要がないアプリケーションであれば、十分な機能を有しています。
また、他のライブラリへの依存が無いこともよいです。
Doma -----------
データ型:http://doma.seasar.org/reference/basic.htmlエンティティ定義:http://doma.seasar.org/reference/entity.html
トランザクション:http://doma.seasar.org/reference/transaction.html
アノテーション:http://doma.seasar.org/reference/apt.html
Daoインターフェース:http://doma.seasar.org/reference/dao.html
■DB生成
MySQLにテーブルを構築します。今回は、テスト用に1つテーブルを作成しました。
ex)
○テーブル
use beta_doma_table;
CREATE TABLE `beta_doma_table`.`beta_doma` (
`beta_doma_id` INT NOT NULL AUTO_INCREMENT,
`beta_doma_message` VARCHAR(255) NULL,
`beta_doma_number` INT NULL,
`beta_doma_created_at` TIMESTAMP NULL,
`beta_doma_updated_at` TIMESTAMP NULL,
`beta_doma_deleted_flag` TINYINT NULL DEFAULT 0,
`beta_doma_deleted_at` TIME NULL DEFAULT NULL,
PRIMARY KEY (`beta_doma_id`),
UNIQUE INDEX `beta_doma_id_UNIQUE` (`beta_doma_id` ASC))
ENGINE = InnoDB
COMMENT = 'test for doma table';
○テスト用データ
use beta_doma_table;
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test1こんにちは', 101, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test2ありがとう', 102, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test3すばらしい!', 103, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test4確かに', 104, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test5緩やかに', 105, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test6そうですね', 106, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test7反対です', 107, now(), now());
insert into beta_doma (beta_doma_message, beta_doma_number, beta_doma_created_at, beta_doma_updated_at) values('test8。。。888888', 108, now(), now());
■データソースの生成
以下の用にDBへのアクセス情報を保持しておきます。
MySQLの方言も吸収します。
■Entityの生成
テーブルに対応したEntityを生成します。
自動生成するツール Doma Gen もあるようなので、後日試します。
■Entityに対するDaoを生成
Entityに対する操作をDaoに定義します。
引数をカラム名と等しくする必要があります。
■コンパイル時のアノテーションプロセス
プロジェクトプロパティの[JavaCompiler]-[Annotation Processing]-[Enable project specific settings]をonにします。
Generated source directoryには「.apt_generated」とします。
[Factory Path]には、domaのライブラリ(doma-1.XX.X.jar)を指定します。
■プロジェクトビルド
antでdomaをビルドします。
destにはビルド先を指定します。Daoインターフェースの実装クラス(Impl)がDomaによって生成されます。
targetには、jarが出来ます。
■生成jarをビルドパスに追加
targetに生成したjarをビルドパスに追加します。
JavaのアプリケーションからdomaのDAO機能を使うことが出来ます。
■テスト用コード
以下の用にEntityを取得し、更新が可能です。
以上で、Domaの基本的な操作は完了です。
大きなデータベースの場合、Entityを手動で書くことが難しくなります。
そのため、Doma gen が力を発揮するのでしょう。
0 件のコメント:
コメントを投稿