← 解説「JDBC・JPA・Hibernate と、略語の早見表」に戻る
サンプルコードで身につける: JDBC・JPA・Hibernate と、略語の早見表
解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。
1用語早見表: データベースの用語
このレッスン前半の用語を1つずつ並べた表です。 は API、ドライバはその実装、 は仕様、 はその実装、という2組の「決まりと実装」になっています。TypeORM や Prisma との対応は、 であるという点までです。
用語 | 一言で手元では: 何として見えるか近いもの: Node / NestJS で近いものJDBC | Java から SQL でデータベースを使うための標準 APIJDK に入っている手元では: java.sql.Connection などのインターフェース近いもの: pg や mysql2 を直接使う層(ただし共通の API)JDBC ドライバ | 個々のデータベースと実際に話す実装JDK には入っていない。別の JAR手元では: 依存に足す JAR近いもの: pg、mysql2DataSource | 接続を取り出す窓口のインターフェース手元では: javax.sql.DataSource(JDK の一部)近いもの: 対応を確かめていないJPA | オブジェクトと表の対応づけの標準仕様現在の正式名は Jakarta Persistence手元では: jakarta.persistence の @Entity や @Id近いもの: 無い(仕様と実装が分かれている)Hibernate | JPA の実装の1つ。独自の API も持つ手元では: 起動ログの Hibernate ORM core version 7.4.5.Final近いもの: TypeORM / Prisma(ORM である、という点まで)ORM | オブジェクトと表を対応づけることobject/relational mapping の略近いもの: TypeORM / Prisma がしていることエンティティ | 表の行に対応づけられる、保存の対象のオブジェクト手元では: @Entity を付けたクラス近いもの: 対応を確かめていないSpring Data JPA | JPA を使うリポジトリを書きやすくするSpring のプロジェクトここでのリポジトリはデータの出し入れの窓口のこと。Maven のリポジトリ(JAR の置き場)とは別の意味手元では: JpaRepository を継承したインターフェース近いもの: 対応を確かめていない
2エンティティと、Hibernate が出した SQL
を付けたがエンティティで、1つのが表の1行に対応します。自分では SQL を書いていませんが、保存と読み出しのときに Hibernate が SQL を組み立てて送りました。末尾のコメントがその実物で、1行目は ID の番号を採るための SQL です。SQL の文面は Hibernate の版とデータベースで変わります。
// エンティティ: 表 author の1行に対応づけられるクラス
// (@Entity や @Id は JPA のアノテーション。import の行は省略)
@Entity
class Author {
@Id @GeneratedValue Long id;
String name;
@OneToMany(mappedBy = "author", cascade = CascadeType.ALL)
List<Book> books = new ArrayList<>();
protected Author() {}
Author(String name) { this.name = name; }
}
// Spring Data JPA のリポジトリ。書くのはこの1行で、実装は書かない
interface AuthorRepository extends JpaRepository<Author, Long> {}
// Author を保存し、あとで ID で読んだときに Hibernate が出した SQL
// (Hibernate ORM 7.4.5 / H2。SQL を表示する設定で起動。
// ... は省略した行で、関連する Book の採番と保存などがある)
// Hibernate: select next value for author_seq
// ...
// Hibernate: insert into author (name,id) values (?,?)
// ...
// Hibernate: select a1_0.id,a1_0.name from author a1_0 where a1_0.id=?
3略語の早見表
Java と の文書でよく見る略語です。・・ は、Java や の仕様が定義した語ではなく、慣習的な呼び名です(誰が使い始めたかはこのコースでは確認していません)。 は配布元の支援の約束で、最新の版は別にあります。
略語 | 正式名称意味LTS | Long-Term Support配布元が長く支援すると約束した版。言語の性質ではないOracle の言い方では Java SE 8・11・17・21・25 が LTSGA | General Availability一般提供(正式公開)の状態を指す語「GA になった」「GA 版」のように使うSNAPSHOT | (略語ではない)Maven の、開発中でまだ確定していない版の印RELEASE | (略語ではない)Spring が以前、正式版の版番号に付けていた印例: 2.3.12.RELEASE。Spring Boot は 2.4.0 から付けないPOM | Project Object ModelMaven のプロジェクト定義。ファイルは pom.xmlBOM | bill of materials依存の版をまとめて決めておく一覧DI | Dependency Injection依存性の注入。必要な相手を引数などで受け取ることIoC | Inversion of Control制御の反転。DI はその一種AOP | Aspect-oriented Programmingメソッド呼び出しの前後に処理を挟む仕組みORM | object/relational mappingオブジェクトと表を対応づけることPOJO | Plain Old Java Object特別な親クラスやインターフェースを強制されない、ふつうの Java のオブジェクトDTO | Data Transfer Object値を運ぶためのオブジェクトを指す、慣習的な呼び名Spring Data や NestJS の文書が使う。仕様の用語ではないDAO | Data Access Objectデータの読み書きを受け持つオブジェクトを指す、慣習的な呼び名Spring Framework の文書が使う。仕様の用語ではないFQCN | fully qualified class nameパッケージ名まで含めたクラスの名前を指す、慣習的な略語Java 言語仕様の語は fully qualified name(完全修飾名)JDBC | Java Database ConnectivityOracle の JDK 8 の文書の表記JPA | Java Persistence API現行の仕様名は Jakarta PersistenceJSP | JavaServer Pages(現行名 Jakarta Pages)EJB | Enterprise JavaBeans(現行名 Jakarta Enterprise Beans)
4よく見るファイルとフォルダの名前
プロジェクトを開いたときに目に入る名前の早見表です。・・ のどれがあるかでが分かり、 や があれば を作る構成だと見当が付きます。 4.1.1 の文書は設定ファイルを と と書いています。
名前 | 何か補足application.properties / application.yaml(.yml)Spring Boot の設定ファイル。雛形では src/main/resources/ にあるpom.xml | Maven のプロジェクト定義build.gradle / settings.gradle | Gradle のビルドスクリプトと設定build.xml | Ant のビルドファイルどれがあるかで、使っているビルドツールが分かるmvnw / gradlew | ラッパー決まった版の Maven / Gradle を取ってきて実行するスクリプトtarget/ | Maven の出力先build/ | Gradle の出力先Ant では出力先の名前を自分で決めるので、build/ があるだけでは Gradle とは限らないlib/ | 依存の JAR を置く、慣習的なフォルダ名Ant の古いプロジェクト、WAR の中の WEB-INF/lib などWEB-INF/ | WAR の中の、外から直接は見えない部分classes/・lib/・web.xml が入るweb.xml | Servlet と URL の対応などを書くファイルWEB-INF/ の直下にあるMETA-INF/ | JAR の中の説明用のフォルダマニフェスト(MANIFEST.MF)が入るsrc/main/java / src/main/resources / src/test/javaMaven が決めた標準の配置。Java の規則ではない~/.m2/repository | Maven のローカルリポジトリ取ってきた JAR が全プロジェクト共用で溜まる
5混同しやすいもの: 版の後ろに付く印
版の文字列の後ろの印から、どの段階の版かを読むコードです。古い記事で見る と、今の 4.1.1 は、どちらも正式版という同じ意味です。 と は確定前の版です。規則は Spring の版の付け方に合わせたもので、ほかのライブラリが同じ付け方とは限りません。
Java