事實上,JAVA社區已經開發了許多面向對象的方法來處理數據持久性:EJB、JDO、Hibernate和Toplink都是解決這個問題的非常好的方案。另壹方面,JPA是java EE 5指定的標準持久性應用程序接口。JPA規範最初是作為JSR 220:EJB 3.0規範的壹部分,用來簡化EJB實體bean的編程模型。雖然在Java EE 5.0中與實體bean相關,但是JPA也可以在容器外的java SE環境中使用。
在本文中,您將看到借助JPA中的註釋,以面向對象的方式處理數據持久性是多麽簡單和優雅。本文的讀者是JPA的初學者。同時,他們需要掌握壹些基本的關系數據庫概念,熟悉JAVA 5中的註釋。JPA需要JAVA 5或更高版本,因為它使用了JAVA中的很多新特性,比如註釋和泛型。
OpenJPA和示例程序
在本文中,我們將使用OpenJPA來演示,它是Apache組織提供的壹個JPA規範的具體實現。我選擇OpenJPA而不是其他廠商的產品,主要是因為它集成在Weblogic、WebSphere、Geronimo等應用服務器中。在撰寫本文時,OpenJPA的最新版本是1.0.1,可以通過參考資料部分的鏈接下載。如果您想使用其他JPA實現,那麽顯然您必須先閱讀相關文檔。
在本文的剩余部分,我將通過壹個例子向您介紹JPA中的各種概念。這個例子基於壹家名為XYZ的超市,它既有網上商店又有實體零售店。首先,您將學習如何使用JPA來構建客戶模型。在後面的部分,您將學習如何通過對象繼承來擴展CRUD操作。
本文中的代碼包包括實體偵聽器和本文中討論的三種繼承類型(單個表、連接和每個類壹個表)的代碼。
JPA:怎麽用?
為了實現壹個JPA兼容的程序,妳需要以下三樣東西:
實體類
persistence.xml文件。
用於插入、更新或查找實體的函數類。
JPA只能用來處理數據持久化。讓我們來看看如何通過JPA設計數據存儲方法。假設您已經有壹個客戶表,如表1所示。