(注:本系列筆記是在學習尚硅谷JPA課程的時候寫下的,結合課程內容和自我理解,方便自己以后進行復習)
一、在創建JPA之前看看什么是JPA
1、Java Persistence API:用於對象持久化的 API
2、Java EE 5.0 平台標准的 ORM 規范,使得應用程序以統一的方式訪問持久層
3、結合下面兩幅圖片進行理解:
JPA功能示意圖:
Figure 1.1
JDBC功能示意圖:
Figure 1.2
4、JPA和Hibernate的關系
JPA 是 hibernate 的一個抽象(就像JDBC和JDBC驅動的關系):
——JPA 是規范:JPA 本質上就是一種 ORM 規范,不是ORM 框架 —— 因為 JPA 並未提供 ORM 實現,它只是制訂了一些規范,提供了一些編程的 API 接口,但具體實現則由 ORM 廠商提供實現
——Hibernate 是實現:Hibernate 除了作為 ORM 框架之外,它也是一種 JPA 實現
從功能上來說, JPA 是 Hibernate 功能的一個子集
二、創建JPA工程之前需要解決一個問題:at least one user library must be selected
問題描述:在Workspace中右鍵,new → JPA Project,選擇JAP version為2.0。此時,向導中的Finish是灰色的,不能夠點擊完成。沒辦法,只好點擊Next看看,一路Next下去看到如下圖Figure 2.1所示這樣一個問題:at least one user library must be selected。
Figure 2.1
沒有辦法創建JAP工程,只好網上搜索,找到一篇歪果仁寫的一篇博文,很好的解決了我這個問題:
http://www.javabeat.net/eclipselink-jpa-installation-configuration/
下面將博文要點整理成如下中文:
這篇文章將向你介紹如何安裝和使用EclipseLink-JPA:
1、安裝EclipseLink JAR 文件
- 從 https://www.eclipse.org/eclipselink/downloads/ 處下載 EclipseLink 2.5.2 Installer Zip (38 MB) 資源(也可以選擇其它版本)。EclipseLink中提供了所有持久化服務的的實現。
- 持久化服務將會用到下面三個jar包:
①、eclipselink.jar
②、javax.persistence.source_2.1.0.v201304241213.jar
③、javax.persistence_2.1.0.v201304241213.jar
- 將下載好的EclipseLink 2.5.2壓縮包解壓到任何你想用於完成安裝的文件夾中。我將文件解壓到 “.\workspace\libraries\EclipseLink 2.5.2” 文件夾下。
2、在Eclipse IDE中設置 JPA Facet
首先在Eclipse中創建一個動態web工程,為我們后續添加 JPA facet 作准備。步驟如下:
①、打開 Eclipse IDE
②、創建一個動態的Web工程
③、在剛剛創建好的工程上點擊右鍵,選擇properties
④、在左側那一列中點擊 “Project Facets”
⑤、然后在右側選中 JPA 選項,同時選擇 JPA version 為2.0。如下圖Figure 2.2所示:
Figure 2.2
這里有一個要注意的,因為有后續的很多設置要完成,所以在選擇JPA和Version以后不能直接點擊OK,而是要點擊上圖中下面部分標注的“Further configuration ...”鏈接來進行后續配置。這個操作將會打開一個新的對話框用於配置JPA Facet。
3、添加 JPA Facet
新彈開的對話框如下圖Figure 2.3所示。用戶可以在這個對話框中添加必須的庫來實現JPA。
Figure 2.3
①、對話框上端的platform默認情況下是“Generic 2.0”,我們可以依據我們自己下載的EclipseLink版本來進行修改。我下載的是2.5.2版本,所以如Figure 2.3所示選擇platform為EclipseLink 2.4.x/2.5.x版本
②、JPA implementation菜單不需要做任何修改。“User Library” type將會允許用戶添加JPA庫
③、點擊右側的“Manager Libraries”。除此之外,另外一個實現方法就是點擊“Download Library”來進行下載庫,但是這里下載實在是太慢,所以不使用它。
④、點擊“Manager Libraries”以后會彈出一個對話框,在新的對話框中點擊“New”。
⑤、“New”以后又會彈出一個對話框,要我們填寫庫的名字,我填寫為“EclipseLink 2.5.2”。點擊OK。
到目前為止,我們已經做好了添加jar包的前期准備。接下來就是添加上面“1、安裝EclipseLink JAR 文件”這一步中提到的那三個jar包了。到目前的效果圖如下Figure 2.4:
Figure 2.4
4、配置Library
配置Library需要我們添加JPA實現所必須的jar包。按照下面的步驟來完成配置:
①、點擊“Add External JARs...”(也就是Figure 2.4圖中紅色框中的按鈕)
②、添加 eclipselink.jar,它位於“.\workspace\libraries\EclipseLink 2.5.2\jlib”文件夾下面
③、添加 “.\workspace\libraries\EclipseLink 2.5.2\jlib\jpa”文件夾下 javax.persistence.* 開頭的jar包(也就是前面說的后兩個jar包)。如Figure 2.5所示
Figure 2.5
④、點擊下端的OK按鈕,會關閉添加library的對話框。
⑤、但是,為了避免JPA Facet報“At least one user library must be selected”這個錯誤。我們選擇剛剛生成的library
⑥、點擊OK。
到現在為止,前面提到的At least one user library must be selected錯誤已經得到了解決。到這里我們再回頭去創建一個JPA工程就沒有什么問題了。但是,歪果仁的這篇文章的目的是為了在動態Web工程中創建一個JPA環境。
這個是很有必要的,想想也是,現在單純為了學習建了一個JPA工程,以后做Web工程的時候就需要創建一個動態Web工程了。
而且,后面的兩個步驟還是挺有意思的,所以,這里是插敘,下面繼續翻譯歪果仁的文章。
到現在為止我們創建的動態web工程已經能夠使用JPA了。但是,JPA是一個和關系型數據庫相聯系的持久化服務。所以,接下來我們就需要創建一個數據庫連接
5、創建數據庫鏈接(新意在於可以在配置的同時完成鏈接的測試工作)
一旦你創建完成了一個user library,接下來的工作就是創建一個數據庫連接。最后一個對話框應該如Figure 2.6所示:
Figure 2.6
為了建立數據庫的鏈接,按照以下步驟進行:
①、點擊“Add Connection...”超鏈接(Figure 2.6中有標注)
②、Connection Profile 對話框將會彈出
③、選擇工程中在對話框中選擇工程使用的數據庫種類。本教程中假設你使用的是MySQL數據庫。
④、修改鏈接的名字,點擊Next
⑤、填寫“Specify a Driver and Connection Details”表單。在最初的時候可能彈出的對話框中沒有驅動可以選擇,這個時候我們需要手動的添加相關驅動,步驟如Figure 2.7和Figure2.8所示:
Figure 2.7
Figure2.8
點擊上面的Figure 2.8中的OK以后,新的driver就添加完成了。隨后就是在Figure 2.9中修改數據庫名,填寫用戶名和密碼,然后點擊“Test Connection”測試數據庫連接是否成功:
Figure 2.9
有意思的是,測試通過會彈出一個 ping successed! 提示框,如Figure 2.10所示:
Figure 2.10
⑥、在第⑤步的末尾,我們已經為JPA工程准備好了數據庫連接
⑦、點擊Figure 2.9中的finish按鈕
⑧、點擊finish以后對話框將會關閉,所以要確定連接已經被選中
⑨、點擊,OK關閉Further configuration dialog。繼續點擊OK關閉project facets
現在,你已經創建完成了一個新的動態web工程,同時為它配置好了JPA環境。在eclipse左側的導航欄里面你可以在src下看見一個META-INF文件夾了,該文件夾下面有一個persistence.xml文件。
6、配置persistence.xml文件
如果你按照步驟進行到這里了,而且所有步驟都成功操作了。現在是時候“編輯”persistence.xml文件的時候了,這個文件將會幫助我們連接我們的數據庫。
為了配置persistence.xml文件,你需要雙擊打開它。它會在單獨的一個xml文件編輯器中打開,在這個編輯器的底端會有很多的標簽。現在我們按照以下的步驟完成persistence.xml文件的配置工作:
①、導航到Connection標簽
②、將transaction type選擇為“Resource Local”。這個改變將會激活EclipseLink connection pool。
③、點擊“populate from connection”。見Figure 2.11
④、選擇之前配置好的鏈接。見Figure 2.12
⑥、用 Ctrl + s 來保存文件。見Figure 2.13
⑦、導航到Source標簽。你將會看到用於數據庫連接的最小配置。
Figure 2.11
Figure 2.12
Figure 2.13
看看xml中的源碼如下:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="a" transaction-type="RESOURCE_LOCAL"> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="tiger123"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> </properties> </persistence-unit> </persistence>