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

EJB 3.0 簡化企業級 Java 開發 (下):JPA ORM 完整指南

     編輯:Java 相關知識

ORM 兩條路

  • 手工 JDBC:簡單應用、模型接近關係表。
  • 框架自動映射:複雜域模型、節省樣板碼、減少錯誤。EJB 3.0 實體 Bean = 標準化 POJO ORM 框架,建立在 Hibernate/TopLink 經驗之上。

EJB 3.0 兩大創新

  1. 註解驅動映射:映射元數據內嵌 Java 代碼,直觀、易維護、IDE 友好。
  2. 持久化單元:.par 封裝實體類 + persistence.xml 定義資料源、方言、快取等,支援多上下文隔離部署。

基本映射範例


@Entity @Table(name="PERSON")
public class Person implements Serializable {
    @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id;
    private String name;
    @Temporal(TemporalType.DATE) private Date dateOfBirth;
    // getter/setter
}

關聯映射


@OneToOne private Resume resume;
@ManyToOne @JoinColumn(name="ADDR_ID") private Address addr;
@OneToMany private List cards; // CreditCard 端 @ManyToOne private Person person;

容器自動維護外鍵,雙向關聯需 mappedBy 指定擁有方。

繼承映射


@Entity @Inheritance @DiscriminatorColumn(name="TYPE") @DiscriminatorValue("C")
public class Consultant extends Person { private double rate; }

預設單表策略,TYPE 區分子類。

持久化單元配置


<persistence-unit name="cal">
  <jta-data-source>java:/DefaultDS</jta-data-source>
  <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
  <property name="hibernate.cache.provider_class" value="org.jboss.ejb3.entity.TreeCacheProviderHook"/>
</persistence-unit>

EntityManager 核心操作

  • persist(newEntity):新增
  • find(Class, pk) / createQuery("from Person").getResultList():查詢
  • Managed 實體自動髒檢查:事務結束自動 UPDATE,無需額外 API。
  • merge(detached):將脫管實體納管 (反序列化、遠程傳遞後)。
  • flush() / @FlushMode(NEVER):手動/延遲同步。

事務整合

@TransactionAttribute(REQUIRES_NEW) 方法級事務,容器管理事務邊界,EntityManager 自動參與。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved