初學 Hibernate 時,官網下載頁面出現 OGM 和 ORM 兩個版本,很多開發者一臉懵。本文快速釐清兩者區別,幫你選對包。
| 維度 | Hibernate ORM | Hibernate OGM |
|---|---|---|
| 全稱 | Object Relational Mapping | Object Grid Mapping |
| 目標數據庫 | 關係型數據庫 | NoSQL 數據庫 |
| 支持示例 | MySQL, Oracle, PostgreSQL, SQL Server | MongoDB, Cassandra, Redis, Neo4j, Infinispan |
| API 標準 | JPA (javax.persistence) | JPA (相同註解,不同實現) |
| 核心功能 | 表映射、SQL 生成、事務、緩存 | 文檔/鍵值/圖映射、NoSQL 方言適配 |
用 MySQL 和 Oracle → 直接下 Hibernate ORM。
OGM 專門為 NoSQL 設計,雖然也用 JPA 註解(@Entity、@Id 等),但底層不生成 SQL,而是轉換為各 NoSQL 的原生查詢語言。對關係型數據庫無任何優勢,反而會引入不必要的複雜度。
org.hibernate:hibernate-core:5.6.15.Final (5.x) 或 6.4.4.Final (6.x)「OGM 能不能也連 MySQL?」
理論上 OGM 有關係型存儲後端實驗性支持,但極不成熟,生產環境千萬別用。老實用 ORM。
記住:關係型用 ORM,NoSQL 用 OGM,別搞反了。