Java Persistence API (JPA) 起源於 EJB 3.0 持久化機制,提供將純 POJO 物件持久化的標準化方式。本文示範在 Spring 2.5 獨立(Standalone)環境中,逐步配置 JPA,採用 Glassfish JPA(基於 Oracle TopLink 的開源實作)作為持久化提供者。
toplink-essentials.jarspring.jar、spring-jpa.jar、spring-mock.jarcommons-logging.jar、log4j.jar、junit.jar所有 JAR 需加入 Classpath。
範例定義三個實體類別,採用 JPA 註解指定 ORM 元數據。以 Restaurant 為例:
@Entity
public class Restaurant {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String name;
@OneToOne(cascade=CascadeType.ALL)
private Address address;
@ManyToMany
@JoinTable(inverseJoinColumns=@JoinColumn(name="ENTREE_ID"))
private Set entrees;
// Getter/Setter 略
}
註解方式簡潔,直接在程式碼旁標註映射關係,無需額外 XML 檔案。
核心在於設定 LocalContainerEntityManagerFactoryBean,指定資料來源、JPA 提供者與掃描套件。交易管理可使用 JpaTransactionManager,搭配 @Transactional 註解實現宣告式交易。
撰寫簡單主程式載入 Spring Context,取得 EntityManager 執行 CRUD 操作,驗證配置正確性。完整代碼可參考隨文原始碼連結。
透過少量 JAR 與 Spring Bean 配置,即可在獨立環境體驗 JPA 強大的 ORM 能力,為後續企業級應用奠基。