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の生成や処理の管理をフレームワークに委ねることができます。
