首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

ORM 框架演進史:從 Entity Bean 到 JPA,再到「極簡」映射的追求

     編輯:Java 相關知識

歷程回顧

  • Entity Bean (CMP/BMP):重型、侵入性強、依賴容器、測試困難,曾是 J2EE 炫耀資本,今成「怪胎」。
  • 輕量 ORM (Hibernate/iBATIS):POJO、無容器依賴、易測試、可移植。早期仍受 XML 映射文件泛濫困擾。
  • JDK 1.5 Annotation + JPA:標準化註解映射,@Entity、@Table、@Column... 徹底消除 XML,Hibernate 3.2+ 實現 JPA,成為里程碑。

「簡約而不簡單」—— EasyDBO 極簡映射示範

階段 1:全註解(仍有大量重複)

@Table(tableName="OrderInfo")
public class Order implements Serializable {
    @TableField(name="id") private Number id;
    @TableField(name="sn") private String sn;
    @TableField(name="vdate") private Date vdate;
    ... 20+ 個 @TableField(name="xxx") 對應同名欄位 ...
    @OneToOne(column="customer_id", type=Customer.class) private Customer customer;
    @ManyToOne(column="order_id", type=OrderDetail.class) private Set children;
}

階段 2:約定優於配置(刪除 80% 同名註解)

@Table(tableName="OrderInfo")
public class Order implements Serializable {
    @OneToOne(column="customer_id", type=Customer.class) private Customer customer;
    @ManyToOne(column="order_id", type=OrderDetail.class) private Set children;

    private Number id;      // 默認映射 ID 欄位
    private String sn;      // 默認映射 SN 欄位
    private Date vdate;     // 默認映射 VDATE 欄位
    ... 無需任何註解 ...
}

階段 3:關聯也可約定(表名、外鍵欄位、集合類型全靠命名規範推導)

框架掃描屬性名、類型、泛型,自動推導:

  • customer → CUSTOMER_ID 外鍵 → Customer 表
  • children (Set<OrderDetail>) → ORDER_ID 反向外鍵 → OrderDetail 表

最終 POJO 純淨如初,所有「不簡單」的映射邏輯下沉框架內核,開發者專注領域建模。

核心哲學

「簡約主義」不是偷懶,而是將復雜度封裝在框架內部,暴露極致簡潔的 API。JPA 是里程碑,但「簡約」無終點——下一站:編譯期類型安全的查詢 DSL、零啟動掃描、原生 GraalVM 適配...
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved