Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Day-102,103 Connecting Spring Boot with PostgreSQL Database

2025年10月01日に「Dev.to」が公開したITニュース「Day-102,103 Connecting Spring Boot with PostgreSQL Database」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Spring BootでPostgreSQLに接続する手順を解説する。必要なライブラリを追加し、DB接続情報を設定。テーブルのエンティティ、データ操作のリポジトリを作成する。起動時にデータを自動挿入するコントローラーを実装し、データベースへの接続とデータ保存を検証する。

ITニュース解説

この解説では、JavaのWebアプリケーションフレームワークであるSpring Bootを使って、リレーショナルデータベースの一種であるPostgreSQLに接続し、データを保存する基本的な手順を説明する。システムエンジニアを目指す初心者が、実際にアプリケーションとデータベースを連携させる際に必要となる知識を段階的に解説していく。

まず、Spring BootアプリケーションがPostgreSQLデータベースと通信するために必要な「依存関係」を追加する。これは、アプリケーションが特定の機能(この場合はデータベース接続機能)を使うために必要な外部のライブラリやツールを、プロジェクトに組み込む作業を指す。具体的には、プロジェクトの設定ファイルであるpom.xmlに、「Spring Data JPA」、「PostgreSQL Driver」、「Spring Web」という三つの要素を記述する。Spring Data JPAはJava Persistence API(JPA)をSpring Bootで使いやすくするためのもので、データベースとのやり取りを助ける。PostgreSQL Driverは、JavaアプリケーションがPostgreSQLデータベースと通信するための専用のライブラリであり、互いに異なるシステムであるJavaアプリケーションとPostgreSQLが適切に通信できるようにする。Spring Webは、Webアプリケーションを構築するための基本的な機能を提供する。これらの依存関係を追加することで、アプリケーションはデータベース接続やWeb機能の利用に必要な部品を手に入れることができる。Spring Initializrというツールを使えば、プロジェクト作成時にこれらの依存関係をあらかじめ選択できるため、手動で記述する手間を省ける。

次に、データベースへの接続情報を設定する。これは、アプリケーションがどのデータベースに、どのようなユーザー名とパスワードで接続すればよいかを指示する重要なステップである。設定はapplication.propertiesというファイルに記述する。このファイルには、データベースの場所を示すURL、接続時に使用するユーザー名、そしてパスワードを正確に設定する必要がある。例えば、spring.datasource.url=jdbc:postgresql://localhost:5432/mydbという記述は、mydbという名前のPostgreSQLデータベースに、自分のパソコン上(localhost)のポート番号5432で接続することを意味する。ユーザー名とパスワードもここで指定する。さらに、spring.jpa.hibernate.ddl-auto=updateという設定は、JPAの機能を提供するHibernateというツールに対し、アプリケーションのJavaコード(後述のエンティティ)に基づいてデータベースのテーブル構造を自動的に更新するように指示する。spring.jpa.show-sql=trueは、アプリケーションがデータベースに対して実行するSQL文をコンソールに表示させ、開発者が処理内容を確認できるようにするための設定である。spring.jpa.database-platformは、使用するデータベースの種類をHibernateに伝えるもので、ここではPostgreSQLを指定している。

続いて、「エンティティクラス」を作成する。エンティティとは、データベースのテーブルの構造をJavaのクラスとして表現したものだ。例えば、ニュース記事ではStudentというエンティティが作成されている。このStudentクラスは、データベースのstudentテーブルに対応し、idnameagemarksといったフィールド(属性)を持つ。これらのフィールドは、テーブルのカラム(列)に対応する。@Entityというアノテーションをクラスに付与することで、そのクラスがデータベースのテーブルに対応するエンティティであることをSpring Bootに伝える。また、@Idというアノテーションは、そのフィールドがテーブルの主キー、つまりレコードを一意に識別するための項目であることを示す。エンティティクラスには、引数なしのコンストラクタ(デフォルトコンストラクタ)と、各フィールドの値を設定・取得するためのメソッド(ゲッターとセッター)を実装するのが一般的だ。これにより、Javaオブジェクトとデータベースのレコード間の変換がスムーズに行えるようになる。

さらに、「リポジトリインターフェース」を作成する。リポジトリとは、エンティティをデータベースに保存したり、データベースから検索したり、更新したり、削除したりといった、基本的なデータ操作(CRUD操作と呼ばれる)を簡単に行うための仕組みを提供するものだ。Spring Data JPAは、JpaRepositoryという汎用的なインターフェースを提供しており、これを利用することで、開発者が自分で複雑なSQL文を書くことなく、これらの操作を実行できる。ニュース記事ではStudentRepoというインターフェースが作成されており、JpaRepository<Student, Integer>を継承している。<Student, Integer>は、このリポジトリがStudentエンティティを扱い、その主キーの型がIntegerであることを示している。JpaRepositoryを継承するだけで、save(保存)、findAll(全件取得)、findById(IDで検索)、delete(削除)などの基本的なメソッドが自動的に利用できるようになる。

次に、アプリケーション起動時に自動的にデータをデータベースに挿入するロジックを実装する。ニュース記事では「コントローラ」という名前のクラスStudentControllerにこのロジックが組み込まれているが、ここではWebリクエストを受け付ける通常のコントローラ機能ではなく、アプリケーションの初期化処理としてデータ挿入が行われる。@Componentアノテーションは、このクラスがSpring Bootによって管理されるコンポーネントであることを示す。@Autowiredアノテーションは、Spring Bootが自動的にStudentRepoのインスタンスをこのクラスに注入(提供)してくれる仕組みである。これにより、開発者は手動でオブジェクトを作成する手間なく、リポジトリを使ってデータベース操作を行えるようになる。そして、@PostConstructアノテーションが付与されたdisplay()メソッドは、アプリケーションが起動して必要な準備が完了した直後に自動的に実行される。このメソッドの中で、Studentオブジェクトを作成し、studentRepo.save(s)というコードでデータベースに保存している。これにより、アプリケーションが起動するたびに、指定された学生データが自動的にデータベースに登録されることになる。

最後に、作成したアプリケーションを実行し、データが正しくデータベースに保存されたことを確認する。アプリケーションを実行する前に、PostgreSQLデータベースが起動しており、application.propertiesで指定したデータベース名(例:mydb)が存在することを確認する必要がある。Spring Bootアプリケーションを起動すると、コンソールに様々なログが表示される。spring.jpa.show-sql=trueの設定により、Hibernateがデータベースにデータを挿入する際に生成したSQL文、例えばinsert into student (age, marks, name, id) values (30, 95, 'Tamil', 1)のような文が表示される。これは、実際にデータがデータベースに書き込まれたことを示す証拠となる。その後、PostgreSQLのクライアントツールなどを使ってselect * from student;というSQLクエリを実行することで、studentテーブルに先ほど挿入された学生のレコードが追加されていることを直接確認できる。この確認作業を通じて、アプリケーションとデータベースの連携が正常に機能していることを確認できる。

このように、Spring BootとPostgreSQLを連携させるには、依存関係の追加、データベース接続設定、エンティティクラスの定義、リポジトリインターフェースの作成、そしてデータ操作ロジックの実装という一連のステップを踏むことになる。これらの手順を理解することで、システムエンジニアとしての第一歩として、アプリケーションがデータベースと連携する基本的な仕組みを習得できる。

関連コンテンツ

関連IT用語

関連ITニュース