Spring Boot

Spring BootからのDBアクセス

JDBCテンプレート(JDBCアクセス)

SQL文を直接書いてデータベースにアクセスする方法で、細かなSQL制御が可能。SQL文を自分で記述する必要があるため、クエリの可読性・管理が難しくなることもありますが、制御が明確で柔軟です。

1. データソースの自動設定

spring-boot-starter-jdbcを依存関係に追加すると、Spring Bootはデータベース接続に必要な設定を自動的に行います。具体的には、以下のような自動設定が行われます:

  • データベース接続の自動検出: application.propertiesに、データベースURLやユーザー名、パスワードが記載されていれば、それに基づいてデータソース(DataSource)を作成します。
  • 接続プールの設定: データベース接続のパフォーマンス向上のため、HikariCPなどの接続プーリング機能がデフォルトで設定されます。接続プールはデータベースとの接続を効率よく管理し、接続の再利用を行うことで、アプリケーションのパフォーマンスを改善します。
2. JdbcTemplateの自動構成

JdbcTemplateは、SQLを直接書いてデータベース操作を行うための便利なテンプレートクラスです。spring-boot-starter-jdbcを追加すると、Spring Bootは自動的にJdbcTemplateのインスタンスを生成し、アプリケーション内で利用できるようにしてくれます。

-- 例: コントローラやサービスクラスで@AutowiredでJdbcTemplateを注入すると、
-- そのままSQLを実行できるようになります。

@Autowired
private JdbcTemplate jdbcTemplate;

public void sampleMethod() {
    String sql = "SELECT * FROM users WHERE id = ?";
    User user = jdbcTemplate.queryForObject(sql, new Object[]{1}, new BeanPropertyRowMapper<>(User.class));
}
3. トランザクション管理のサポート

spring-boot-starter-jdbcでは、@Transactionalアノテーションを利用して、メソッド単位でトランザクション管理を行うことが可能です。Spring Bootが自動設定したデータソースに基づき、トランザクション管理が行われ、データの整合性を保ちながら安全にデータベース操作を実行できます。

O/Rマッパー(ORM)

O/Rマッパ(例えば、Spring Data JPAやMyBatisなど)を使用する場合、通常はspring-boot-starter-jdbcを追加する必要はありません。
クラスとテーブルの対応付けを行い、SQLを自動生成するフレームワーク(例: Hibernate, MyBatis)。データベースの操作がオブジェクト指向の操作に近くなるため、複雑なSQLの生成や処理の管理をフレームワークに委ねることができます。

スポンサーリンク
タイトルとURLをコピーしました