ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
Hibernate とは
Hibernate は、Java の代表的な ORM (Object Relational Mapping) ライブラリです。Java クラス (エンティティ) とリレーショナルデータベースのテーブルをマッピングし、SQL を直接書かずにオブジェクトとして CRUD 操作を行えるようにします。
ライセンスは LGPL の OSS で、現在は JPA (Jakarta Persistence API) の参照実装としても広く採用されています。Spring Boot で spring-boot-starter-data-jpa を入れたとき、内部で動いているのが Hibernate です。
主な特徴
- ORM — Java クラスとテーブルのマッピングを宣言的に定義
- JPA 準拠 —
jakarta.persistence/javax.persistenceアノテーションをそのまま使える - HQL / JPQL — SQL に似た独自クエリ言語でオブジェクト中心に検索
- Criteria API — 型安全にクエリを組み立てる
- 遅延ロード (Lazy Loading) — 関連オブジェクトをアクセス時に初めて取得
- キャッシュ機構 — 一次キャッシュ (セッション) / 二次キャッシュ (アプリ全体)
- マルチDB対応 — Dialect を切り替えるだけで MySQL / PostgreSQL / Oracle / SQL Server 等を扱える
典型的なエンティティ定義
|
@Entity |
基本的な操作
|
EntityManager em = ...; |
主要なアノテーション
| アノテーション | 役割 |
|---|---|
@Entity | エンティティクラスを示す |
@Table | テーブル名・スキーマ指定 |
@Id / @GeneratedValue | 主キー・採番戦略 |
@Column | 列名・長さ・NULL 許可・unique |
@OneToOne / @OneToMany / @ManyToOne / @ManyToMany | 関連 |
@JoinColumn | 外部キー列 |
@Embeddable / @Embedded | 値オブジェクトの埋め込み |
@Transient | 永続化対象外フィールド |
@Version | 楽観的ロック用バージョン列 |
クエリの3つの書き方
| 方式 | 特徴 |
|---|---|
| JPQL / HQL | 文字列ベース。FROM User u WHERE u.name = :name |
| Criteria API | 型安全。リファクタリングに強いがやや冗長 |
| Native Query | 素のSQL。DB固有機能を使いたい時 |
パフォーマンス上の落とし穴
- N+1問題: コレクションをループで参照する際に SELECT が件数分発行される。
JOIN FETCHや@EntityGraphで解決 - LazyInitializationException: セッション外で遅延ロード関連にアクセスした際に発生
- 巨大コレクションを取得:
findAllを巨大テーブルに使わない - キャッシュの効きすぎ: バッチ更新後に古い値が見えるなど。
em.clear()や明示的フラッシュ - SQLログを有効化 (
spring.jpa.show-sql=true、hibernate.format_sql=true) して発行 SQL を確認
Hibernate / JPA / Spring Data JPA の関係
- JPA: 仕様 (Jakarta Persistence)
- Hibernate: その実装ライブラリ
- Spring Data JPA: JPA をさらに使いやすくするレポジトリ抽象。内部で Hibernate を呼ぶ
注意点
- Jakarta EE 9 以降、パッケージは
javax.persistence→jakarta.persistenceに変わっている - 古い
net.sf.hibernate系 (Hibernate 2) は EOL。新規開発では使わない - マイグレーションは Hibernate の
hbm2ddl.autoではなく、Flyway / Liquibase を使うのが本番運用での定石
関連
- 親カテゴリ: ライブラリ (Java)
- 関連エラー: net.sf.hibernate.QueryException: unexpected token: as
- Java本体: Java
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
- Hibernate
- JasperReport
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?