
本コースの内容は、Javaアプリケーションからリレーショナルデータベースへアクセスする技術を、JDBC、MyBatis、JPA(Hibernate)の3つの方式について、比較しながら体系的に学ぶことです。SQLの実行方法だけでなく、Javaオブジェクトとテーブルの対応、トランザクション、関連、同時更新、問い合わせの組み立てという観点から、それぞれの方式が隠している処理と、開発者が明示的に設計すべき責務を区別します。接続、SQL、結果の変換、エンティティの状態、関連の読み込み、ロック、動的検索を、実在するサンプルコードとDDLに対応付けて解説します。Java 25を前提にしています。
本コースを修了すると、発行されるSQLとJava側の状態が一致しているかを自分で確認できるようになり、大規模な企業システムやWebサービス開発において、データアクセス層の設計と実装に強いJavaエンジニアとして活躍するための土台を固めることができます。
本コースは、Javaのクラス、例外、コレクション、ラムダ式を読める方を想定しています。テーブル、主キー、外部キー、SELECT、INSERT、UPDATE、DELETE、トランザクションの基礎知識を使用します。Spring固有の知識は必須ではありません。本コースのサンプルは、Springなどのフレームワークを使わないJava SEのコンソールプログラムで、JPAのサンプルもEntityManagerFactoryの生成やトランザクションの開始・確定をアプリケーションのコードで明示的に行います。そのため、フレームワークが裏で行っている処理を、1つずつ目で確かめることができます。
本コースの範囲は、以下のとおりです。
Chapter 1.1 - コースの概要と全体構成
Chapter 1.2 - 開発環境とサンプルコードのセットアップ(Codinableの導入、演習の実行、AIチャットによる学習支援)
Chapter 2.1 - データアクセス層の責務と設計パターン
Chapter 3.1 - JDBCの接続・CRUD・トランザクション
Chapter 4.1 - JDBCの同時更新と分離レベル
Chapter 5.1 - Table Data GatewayとMyBatisの基本
Chapter 6.1 - MyBatisの楽観ロック・悲観ロック
Chapter 7.1 - MyBatisの関連の読み込み方式
Chapter 8.1 - MyBatisの動的SQL
Chapter 9.1 - Data MapperとJPAの基本(永続化コンテキスト、エンティティの状態)
Chapter 10.1 - JPAの楽観ロック・悲観ロック
Chapter 11.1 - JPAの関連・フェッチ・カスケード
Chapter 12.1 - JPQLの検索・結合・集約
Chapter 13.1 - JPAの一括更新とネイティブSQL
Chapter 14.1 - Criteria APIによる動的検索
Chapter 15.1 - JPAの値オブジェクト・複合主キー
Chapter 16.1 - JPAの継承とライフサイクル設計
JDBC、MyBatis、JPAの順に、技術ごとにチャプターを分けて進みます。JDBCでは基本と同時更新を、MyBatisとJPAでは基本、同時更新とロック、関連、問い合わせを順に取り上げ、最後にJPAの複雑なマッピングとエンティティのライフサイクルへ範囲を広げます。
本コースには37の演習があり、JDBC、MyBatis、JPA(Hibernate)とデータアクセスの方式を比べながら動かします。各サンプルでは、DDLと初期データ、Javaの入口、発行するSQL、結果を受け取る型、コミットまたはロールバック後のDB状態を対応付けます。さらに、対象のファイルや実行結果を生成AIに渡して、3つの方式で同じ処理を実装した場合の責務を比較させたり、実行ログやSQLから取得件数、ロック、永続化コンテキストの影響を説明させたりした上で、検索結果だけでなく更新件数、例外、トランザクション終了後のDB状態を確認する、というAI駆動開発の流れを体験します。
なお、本コースではJava SEのJDBC、MyBatis、JPAを中心に、データアクセスパターンと実装上の境界を扱います。DB製品固有の管理、SQLチューニングの全領域、分散データベースの設計は対象外です。Spring BootやJakarta EEのアプリケーションの中でこれらの技術を使う方法は、同じシリーズの「Spring Boot Webアプリ基礎+AI駆動」「Jakarta EE Webアプリ基礎+AI駆動」で取り上げています。
本コースの開発環境について
本コースでは、学習に必要な開発環境として、講師が提供するWindows向けのデスクトップ開発環境「Codinable(コーディナブル)」を利用します。Codinableは、エディタ、実行結果、テスト結果、SQL、Webブラウザ、AIチャットを1つの画面にまとめた、オールインワンの学習環境です。
Codinableには、本コースの演習を動かすための実行環境(Java 25とGradle、データベースのHSQLDB、Bashなど)が一式同梱されています。受講生の皆様が、JDKやデータベースを個別にインストール・設定する必要はありません。インストールして「新規コース開始・再開」から本コースを選ぶだけで、講義で紹介したすべての演習を自分の手で動かし、発行されるSQLとDBの状態を確かめることができます。データベースはインメモリのHSQLDBで、演習を実行するたびに初期データから始まります。
さらにCodinableにはAIチャットが搭載されており、開いている演習のファイルと実行結果を踏まえて、AIに質問したり(Askモード)、ファイルの編集を依頼したり(Agentモード)できます。AIに編集を任せ、人が実行して確かめるという、AI駆動開発の基本の流れを安全に体験できます。なおAIチャットは、受講生ご自身が生成AIサービス(Anthropic、OpenAI、Googleのいずれか)のAPIキーを登録して使う方式(BYOK)で、利用料金は各社から直接請求されます。APIキーを登録しなくても、AIチャット以外の機能はすべて使えます。
Codinableのインストーラは、講師のGitHubリポジトリのReleasesページからダウンロードしてください。講師のGitHubアカウントは「KenyaSaitoh」、リポジトリ名は「codinable」です。GitHubで「KenyaSaitoh」を検索して講師のアカウントを開き、リポジトリの一覧から「codinable」を選んでください。Googleで「KenyaSaitoh codinable」と検索しても見つかります。
Releasesページの「Assets」にある「Codinable-setup-<バージョン>.exe」をダウンロードし、実行します。管理者権限は不要です。動作環境は64ビット版のWindows 10/11で、初回の実行時にライブラリを取得するため、インターネット接続が必要です。具体的なセットアップ方法と演習の動かし方は、チャプター1.2で取り上げます。
本コースのリソースについて
本コースの説明で使用する資料は、各レッスンのリソースボタンから、PDFファイルとしてダウンロード可能です。また「1.1.1 本コースの狙いと対象」のリソースボタンから、コース全体のPDFファイルをダウンロードすることもできます。必要に応じて、お手元で開いて活用してください。
本コースのサンプルコードは、Codinableの「コースパック」として提供しています。Codinableで本コースを選ぶと、すべての演習が手元に展開され、そのまま実行・編集できます。書き換えて動かなくなった場合も、「初期化」で配布時の状態に戻せます。