JPA
JavaにおけるO/Rマッピングの標準で、元はJSR 220(2006年)、現在はJakarta Persistenceと呼ばれる。実装ではなく仕様である。
クラスに@Entity、フィールドに@Idや@ManyToOne、@OneToManyを付けると、EntityManagerが永続化コンテキスト、遅延読み込み、ダーティチェックを引き受ける。クエリ言語JPQLはSQLに似ているが、対象はテーブルではなくエンティティである。Criteria APIは同じことを型安全に行えるが、耐え難いほど冗長だ。実装はHibernate(支配的)、EclipseLink(参照実装)、OpenJPAなど。EJB 2のエンティティビーンへの反動から生まれた規格で、実質的にはHibernateのモデルを公式化したものである。定番の落とし穴はN+1問題と、トランザクション外での遅延読み込みの失敗だ。