要件定義の不安をなくす。要件定義の不安をなくす。ユニファのバックエンド分割に学ぶイノベーションメタバース開発に必要な技術の基本知識をおさらい。Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。MVC(Webインターフェース)で利用する基本的なアノテーションについて紹介しました。Bootでのデータベースを扱う際の設定や基本的操作について紹介します。参考資料サンプルアプリケーションの概要サンプルアプリケーションは、前回と同様で、図1に示す簡単な住所録管理アプリケーションです。図1:サンプルアプリケーションのイメージこのアプリケーションでは、表1のAPIを提供します。JDBCではプログラムが煩雑になりやすいといった問題があります。データベースを利用する上ではプログラムしやすいことだけではなく、運用も重要になるので、これらのプロジェクトを使わず、既に使い慣れたライブラリを使っても良いでしょう。JPAを用いた簡単な操作について説明します。データベースでは組み込みのH2データベースを用いるので、リスト1のようにGradleのビルドファイルに指定します。JPAのスターターを指定します。ORMなどの関連するライブラリも含まれます。データベースのドライバに関するライブラリは含まれないため、(2)のように別にH2のライブラリを指定する必要があります。Bootではデータベースへの接続設定は設定ファイル(application.properties)を用います。リスト2はサンプルコードで使用している設定です。(5)データベースへの接続パスワード(1)では、使用するデータソースクラスを指定します。2.xではHikariCPがデフォルトで使われますので、指定しない場合と同じ設定になっています。1.xを使っている場合には、デフォルトで使われるデータソースが変更されているのでバージョンアップをする場合には注意が必要です。(2)はデータベースのドライバの設定をします。(3)ではJDBCでの接続URLを設定します。(4)(5)でデータベースへの接続ユーザとパスワードを設定します。これらの設定は、サンプルなのでh2のインメモリデータベースを使うようにしていますが、実際は外部のデータベースを使うことが多いと思います。今回設定している項目はJDBCとしてデータベースに接続するために必要な設定のみですが、実際には、図2のようにデータソースの実装としてコネクションプール機能があるので、それらの設定も行えます。最近のORマッパーなどのライブラリを利用していると、プログラマがデータベースの接続を意識せずに利用できるため、コネクションプールの機能についてあまり実感がない方もいると思います。コネクションプールは実際のデータベース接続を事前に行っておき、プログラム側が使う際にはそれらの接続を使いまわします。これによってデータベース接続にかかる時間やリソースの節約になります。実際の運用時にはリソースに応じた設定が必要になり、リスト3のように指定可能です。600000また、主に表3の設定が行えます。ここでは省略した設定の詳細はHikariCPのサイトにあるので、こちらもご参照ください。接続時のタイムアウト。アイドル状態で生存できる時間。接続しているかどうかの確認クエリの設定。Bootでは、データベースの初期化を起動時に行うことが可能です。リスト4は、初期化を行う際のサンプルコードです。(2)初期化を行う際のDDLの実行モードspring.jpa.hibernate.ddl-auto=update(1)は初期化を行うかの指定です。「always(初期化を行う)」「embedded(組み込みDB時に行う)」「never(行わない)」の指定が可能です。省略も可能ですが、その場合には、その他の指定に従い自動的に初期化が行われるか、行われないかが決まります。そのため、初期化指定を行っているのに実行されない場合があるので、利用する場合には明示的に指定を行った方が良いでしょう。(2)では、DDLを実行する際のモードを指定します。指定できるのは表4の通りです。必要なEntityに相当するテーブルを作成する。必要なEntityに相当するテーブルを作成する。セッション終了時にはそれらのテーブルは削除される例えば、リスト5は“create”に指定した場合に自動的に流れるSQLのログを示したものです。(id))実際の運用でnoneやvalidate以外を使う場合には実行されるSQLを細かく指定することは難しく、フィールドの順番や細かいデフォルトの指定などがある場合にはDDLファイルを指定して実行した方が便利なケースもあります。その場合には、表5のようなルールでファイルをクラスパス以下に置くここで、自動で実行されます。spring.datasource.initialization-modeの値が「always」に指定されている必要があります。スキーマを作成するためのファイル。初期データなどがある場合に、insert分を実行するためのファイル。NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。