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

EJB 3.0 實體 Bean 開發指南:JPA 註解映射、關聯與繼承策略

     編輯:Java 相關知識

核心註解概覽

實體 Bean 即 POJO,用 @Entity 標記,映射資料表。常用註解:

  • @Table(name="xxx") 指定表名
  • @Id + @GeneratedValue 主鍵生成策略
  • @Column(name="xxx") 欄位映射
  • @Temporal 日期時間型別
  • @OneToOne/@ManyToOne/@OneToMany/@ManyToMany 關聯
  • @Inheritance/@DiscriminatorColumn 繼承映射

完整實體範例


@Entity
@Table(name="orm_oto_users")
public class User implements Serializable {
    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user_id_seq")
    @Column(name="user_id")
    private Long id;

    @Column(name="FIRST_NAME") private String firstName;
    @Column(name="LAST_NAME") private String lastName;
    private String email;
    private String password;

    @Temporal(TemporalType.DATE) private Date created;

    @OneToOne(mappedBy="user", cascade=CascadeType.ALL) private Address address;

    // getter/setter 省略
}

關聯映射要點

  • 單向 vs 雙向:mappedBy 指定關聯擁有方,雙向需兩邊都配置。
  • 外鍵策略:@JoinColumn 自訂外鍵欄位名。
  • 集合型別:@OneToMany 建議用 List 或 Set,避免 Bag 效能問題。

繼承映射策略

策略註解特點
單表@Inheritance(SINGLE_TABLE) + @DiscriminatorColumn預設,查詢快、空值多、DDL 簡單
連接表@Inheritance(JOINED)正規化、查詢需 JOIN、寫入較慢
各表@Inheritance(TABLE_PER_CLASS)多態查詢需 UNION、主鍵跨表唯一

// 子類範例:單表策略
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="person_type")
@DiscriminatorValue("C")
public class Consultant extends Person {
    private double rate;
    // getter/setter
}

持久化單元與 EntityManager

  • META-INF/persistence.xml 定義 persistence-unit、資料源、Hibernate 方言、二級快取等。
  • Session Bean 中 @PersistenceContext(unitName="pu") EntityManager em; 注入。
  • 核心 API:persist()、find()、merge()、remove()、createQuery() (JPQL)。
  • Managed 實體自動髒檢查,事務提交時同步資料庫;Detached 實體需 merge() 重新納管。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved