Spring Boot DB連携

Spring BootでDomaを利用してみた

Domaとは、S2Daoのスタイル(DAOパターンや2 Way SQL)を踏襲したJava6(JDBC4.0)対応のO/Rマッパーで、Springフレームワークに組み込んで使うことができる。今回は、MyBatisの代わりにDomaを利用するよう変更してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

MyBatisのSQL文をXMLファイルに配置してみたMyBatisを利用するプログラムで、これまではMapperクラスに直接SQL文を記載していたが、今回はXMLファイルにSQL文を移動し...



サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加/変更したプログラムである。

build.gradleの内容は以下の通りで、Domaのライブラリを追加すると共に、copySqlタスクを追加している。



また、今回アクセスするテーブル(user_data)のエンティティクラスの内容は以下の通りで、テーブル名・カラム名や主キー設定を行っている。



さらに、今回アクセスするテーブル(user_data)のDaoインタフェースの内容は以下の通りで、「@ConfigAutowireable」「@Dao」アノテーションを先頭に付与し、各メソッドに「@Select」「@Delete」「@Update」「@Insert」アノテーションのいずれかを付与している。



また、SQLファイルの内容は以下の通りで、Daoインタフェースで「@Select」アノテーションを付与したメソッドに対応するSQL文をそれぞれ記載している。

なお、今回のサンプルでは使用していないが、「@Delete」「@Update」「@Insert」アノテーションでsqlFile属性をtrueにした場合も、SQLファイルが必要になる。



さらに、サービスクラスの実装クラスの内容は以下の通りで、先ほどのDaoインタフェースを呼び出すように修正している。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-doma/demo



サンプルプログラムのビルド

サンプルプログラムをビルドするには、ビルド前にSQLファイルをクラスパスが通ったMETA-INFディレクトリ下に配置する必要がある。その手順は以下の通り。

1) IntelliJ IDEA上で右上「Gradle」タブをクリックし、Gradleタスクを表示する。
サンプルプログラムのビルド_1

2) buildタスクを選択し右クリックし、「demo[build]の作成」メニューを押下する。
サンプルプログラムのビルド_2

3) 以下の画面が開くため、起動前の「+」ボタンを押下し、「Gradleタスクの実行」メニューを選択する。
サンプルプログラムのビルド_3

4) build.gradleに設定したcopySqlタスクを設定し、「OK」ボタンを押下する。
サンプルプログラムのビルド_4

5) 起動前タスクにcopySqlタスクが設定されていることを確認後、「適用」ボタンを押下後、「OK」ボタンを押下する。
サンプルプログラムのビルド_5

6) buildタスクを選択し右クリックし、「実行」メニューを押下する。
サンプルプログラムのビルド_6

7) buildタスク実行時のコンソールログの内容は、以下の通り。
サンプルプログラムのビルド_7_1

サンプルプログラムのビルド_7_2

8) buildタスクによって、以下のビルド後ファイルが作成される。
サンプルプログラムのビルド_8_1

サンプルプログラムのビルド_8_2



サンプルプログラムの実行結果

Spring Bootアプリケーションを起動し、「http://(サーバー名):(ポート番号)/」とアクセスすると、以下の画面が表示される。
サンプルプログラムの実行結果_1

また、下記記事と同じように、データの追加・更新・削除を行うことができる。

Spring BootのWEB画面上でCRUDを含むOracleアクセス処理を実装してみた(完成イメージ編)今回は、C(Create)・R(Read)・U(Update)・D(Delete)を一通り含むOracle接続処理をSpring Boo...

さらに、プログラム実行時のSQLログの内容は、以下の通り。
サンプルプログラムの実行結果_2

要点まとめ

  • Domaとは、S2Daoのスタイル(DAOパターンや2 Way SQL)を踏襲したJava6(JDBC4.0)対応のO/Rマッパーで、Springフレームワークに組み込んで使うことができる。
  • Domaで実行するには、エンティティクラス、DAOインタフェース、SQLファイルが必要である。
  • SQLファイルは、DAOインタフェースにおいて、SELECT文またはsqlFile=trueであるDML文で必要になる。
  • SQLファイルは、「(クラスパスが通ったMETA-INFディレクトリ)/(実行するDaoのクラスパス)/(実行するDaoのメソッド名).sql」に記載する。