翻譯|使用教程|編輯:鮑佳佳|2021-02-23 14:17:19.593|閱讀 1163 次
概述:在此博客中,我們將研究如何在IntelliJ IDEA Ultimate中創(chuàng)建一個(gè)簡(jiǎn)單的Jakarta Persistence應(yīng)用程序。Jakarta Persistence是Java Persistence API(也稱為JPA)的新名稱。這些API允許您在關(guān)系數(shù)據(jù)庫(kù)中存儲(chǔ),訪問和管理Java對(duì)象。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
創(chuàng)建一個(gè)新的Jakarta Persistence項(xiàng)目
首先,我們將在IntelliJ IDEA Ultimate中創(chuàng)建一個(gè)新項(xiàng)目,方法是單擊“welcome”屏幕中的“New Project”按鈕。我們將從左側(cè)菜單中選擇Java Enterprise,這使我們能夠利用IntelliJ IDEA Ultimate中提供的企業(yè)框架支持。在本教程中,我將使用最新的長(zhǎng)期支持(LTS)Java版本Java11。然后,我將為模板選擇“庫(kù)”。我不會(huì)為持久性應(yīng)用程序使用任何應(yīng)用程序服務(wù)器,因此不會(huì)配置應(yīng)用程序服務(wù)器字段。然后,我將單擊“下一步”。
在下一個(gè)窗口中,我們將選擇我的應(yīng)用程序所需的庫(kù)。我想使用最新的可用API,因此我將從下拉菜單中選擇Jakarta EE 9。在實(shí)現(xiàn)下,我將選擇EclipseLink。然后,我將單擊“下一步”。
在下一個(gè)窗口中,我將項(xiàng)目名稱設(shè)置為JakartaPersistenceApp,并將組更改為公司名稱com.jetbrains。然后單擊完成。IntelliJ IDEA將創(chuàng)建項(xiàng)目并為我們生成一些文件。
添加數(shù)據(jù)庫(kù)依賴關(guān)系
首先,我們將在IntelliJ IDEA Ultimate中創(chuàng)建一個(gè)新的項(xiàng)目,點(diǎn)擊歡迎界面中的新建項(xiàng)目按鈕。我們將從左側(cè)菜單中選擇Java企業(yè)版,這使我們能夠利用IntelliJ IDEA Ultimate中提供的企業(yè)框架支持。在本教程中,我將使用最新的長(zhǎng)期支持(LTS)Java版本,即Java 11。然后,我將為我的模板選擇庫(kù)。我不會(huì)為我的持久化應(yīng)用程序使用任何應(yīng)用服務(wù)器,所以我不會(huì)配置應(yīng)用服務(wù)器字段。然后,我將點(diǎn)擊 "Next"。
<dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>2.5.1</version> </dependency>
添加依賴項(xiàng)后,我將通過在Windows / Linux上按Ctrl + Shift + O或在MacOS上按??I來(lái)加載我的Maven更改。我也可以單擊pom.xml文件右上角顯示的圖標(biāo)。既然我們的依賴關(guān)系都已設(shè)置好,讓我們開始創(chuàng)建持久性應(yīng)用程序所需的文件。
創(chuàng)建員工實(shí)體
我們將轉(zhuǎn)到View- > Tool Windows- > Persistence打開Persistence工具窗口。持久性工具窗口允許我們?yōu)槌志眯詰?yīng)用程序創(chuàng)建各種資源。您將看到IntelliJ IDEA創(chuàng)建了一個(gè)配置文件,我們將在其中配置托管持久性類和數(shù)據(jù)庫(kù)。此外,還會(huì)為我們創(chuàng)建一個(gè)默認(rèn)的持久性單元。persistence.xml
讓我們創(chuàng)建一個(gè)代表Employee的實(shí)體。為此,我們可以右鍵單擊默認(rèn)的持久性單元,然后單擊“New”,然后單擊“Entity”。
對(duì)于創(chuàng)建類,我們將輸入Employee。對(duì)于Destination Package,我們將創(chuàng)建一個(gè)新的包,叫做實(shí)體。由于該包目前并不存在,所以它將以紅色顯示。一旦我們點(diǎn)擊確定,IntelliJ IDEA將創(chuàng)建新的實(shí)體包和我們的Employee類。我們的Employee類將與生成的ID以及它的setter和getter一起被創(chuàng)建。
根據(jù)Jakarta Persistence規(guī)范,一個(gè)實(shí)體必須有一個(gè)無(wú)參數(shù)的構(gòu)造函數(shù),所以我們將使用Alt+Insert(Windows/Linux)或?N(macOS)來(lái)生成它。我們將從列表中選擇Constructor。然后點(diǎn)擊Select None,這樣我們就可以生成一個(gè)沒有參數(shù)的構(gòu)造函數(shù)了。IntelliJ IDEA創(chuàng)建了Employee無(wú)參數(shù)構(gòu)造函數(shù)。
現(xiàn)在讓我們?cè)俳oEmployee實(shí)體添加幾個(gè)變量。我將為Employee的名字添加一個(gè)名為fName的字符串變量(這不是最好的變量名,但我們將在后面的教程中進(jìn)行修改)。我們還將為雇員的姓添加一個(gè)字符串變量,稱為lName。
實(shí)體類聲明上的水槽圖標(biāo)允許你導(dǎo)航到持久化工具窗口。你的實(shí)體的持久化字段也有溝槽圖標(biāo)。IntelliJ IDEA會(huì)用一個(gè)小鍵圖標(biāo)來(lái)區(qū)分ID字段。你會(huì)注意到ID字段有兩個(gè)溝槽圖標(biāo),一個(gè)用于字段訪問,一個(gè)用于屬性訪問。
讓我們繼續(xù)為我的新字段生成設(shè)置器和獲取器。我會(huì)調(diào)出生成菜單(Windows/Linux下為Alt+Insert,macOS下為?N),選擇Getter和Setter。我會(huì)按Ctrl鍵選擇這兩個(gè)變量,然后點(diǎn)擊確定。IntelliJ IDEA為這兩個(gè)變量生成了getter和setter。
這是我的Employee類目前的樣子:
package entity; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; @Entity public class Employee { @Id @GeneratedValue private Long id; private String fName; private String lName; public Employee() { } public void setId(Long id) { this.id = id; } public Long getId() { return id; } public String getfName() { return fName; } public void setfName(String fName) { this.fName = fName; } public String getlName() { return lName; } public void setlName(String lName) { this.lName = lName; } }
創(chuàng)建主類
現(xiàn)在我們的Employee實(shí)體已經(jīng)完成了,讓我們創(chuàng)建我們的Main類,在這里我們將創(chuàng)建一個(gè)Employee對(duì)象并將其持久化到數(shù)據(jù)庫(kù)中。在Project Window中,我們將選擇java文件夾,按Alt+Insert鍵(Windows/Linux)或按?N鍵(macOS)調(diào)出New菜單。選擇Java類,然后輸入我們的類名Main。
在我們的新類中,我們來(lái)添加一個(gè)main方法。我會(huì)鍵入main并按下Enter鍵,讓IntelliJ IDEA為我完成聲明。現(xiàn)在,我將創(chuàng)建一個(gè)Employee對(duì)象,我們將把它持久化到數(shù)據(jù)庫(kù)中。我們將創(chuàng)建一個(gè)Employee對(duì)象,然后設(shè)置它的名字和姓氏。
現(xiàn)在,持久化我的雇員的第一步是創(chuàng)建一個(gè)EntityManagerFactory(你會(huì)注意到,如果你輸入Emf,IntelliJ IDEA會(huì)彈出EntityManagerFactory類,我們可以選擇)。IntelliJ IDEA也會(huì)建議你使用一個(gè)變量名。我們將通過調(diào)用Persistence.createEntityManagerFactory("default")方法來(lái)創(chuàng)建EntityManagerFactory,并將default作為我們的持久化單元名稱。
接下來(lái),我們將通過調(diào)用EntityManagerFactory.createEntityManager()方法來(lái)創(chuàng)建EntityManager。一旦我們這樣做了,我們現(xiàn)在可以通過調(diào)用EntityManager的getTransaction().begin()來(lái)開始一個(gè)事務(wù)。然后,我們可以通過調(diào)用 EntityManager 的 persist 方法來(lái)持久化我們之前創(chuàng)建的 Employee 對(duì)象。現(xiàn)在這一切都完成了,我們可以清理我們的資源了。我們將提交我們的事務(wù)并關(guān)閉我們的EntityManager和EntityManagerFactory。
最后的Main類應(yīng)該類似于下面的樣子。
import entity.Employee; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; public class Main { public static void main(String[] args) { Employee employee = new Employee(); employee.setfName("Dalia"); employee.setlName("Abo Sheasha"); EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default"); EntityManager entityManager = entityManagerFactory.createEntityManager(); entityManager.getTransaction().begin(); entityManager.persist(employee); entityManager.getTransaction().commit(); entityManager.close(); entityManagerFactory.close(); } }
至此,我們幾乎可以保留數(shù)據(jù)了。缺少的主要步驟是在數(shù)據(jù)庫(kù)中保存我們的數(shù)據(jù)。您會(huì)記得在本教程的前面部分提到過,我們將使用HyperSQL作為數(shù)據(jù)庫(kù)。因此,讓我們繼續(xù)設(shè)置數(shù)據(jù)庫(kù)。
設(shè)置HyperSQL數(shù)據(jù)庫(kù)
讓我們從持久化工具或項(xiàng)目窗口(在 src/main/resources/META-INF/persistence.xml 下)導(dǎo)航到 persistence.xml 配置文件。在persistence.xml文件中,你會(huì)注意到我們的Employee實(shí)體已經(jīng)被配置為默認(rèn)持久化單元中的一個(gè)托管持久化類。讓我們添加配置HyperSQL數(shù)據(jù)庫(kù)所需的Jakarta Persistence屬性。
你會(huì)看到,只要你開始鍵入<,IntelliJ IDEA就會(huì)為所有進(jìn)入<persistence-unit>的元素帶來(lái)建議。我會(huì)選擇<屬性>,然后按Enter鍵。然后我將開始鍵入<,并選擇<屬性>,這將插入帶有名稱和值屬性的<屬性>。
對(duì)于我的第一個(gè)屬性,我想指定HyperSQL JDBC驅(qū)動(dòng)程序。我將第一個(gè)屬性的name屬性設(shè)置為jakarta.persistence.jdbc.driver,value屬性設(shè)置為org.hsqldb.jdbcDriver。
然后,我將添加另一個(gè)屬性元素來(lái)配置數(shù)據(jù)庫(kù)的URL。我將設(shè)置屬性名屬性為jakarta.persistence.jdbc.url。對(duì)于這個(gè)值,我希望我的程序在運(yùn)行時(shí)為我創(chuàng)建一個(gè)嵌入式的HyperSQL數(shù)據(jù)庫(kù)。所以我將指定我的URL在我的項(xiàng)目目標(biāo)目錄下創(chuàng)建一個(gè)嵌入式數(shù)據(jù)庫(kù),并調(diào)用它為myDB。我還將把shutdown屬性設(shè)置為true,這樣數(shù)據(jù)庫(kù)將隨著最后一次連接而關(guān)閉。我可以通過指定jdbc:sqldb:file:target/myDB;shutdown=true的值來(lái)實(shí)現(xiàn)。
接下來(lái),我將添加兩個(gè)屬性元素來(lái)配置數(shù)據(jù)庫(kù)用戶和密碼。對(duì)于用戶,我將設(shè)置屬性名屬性為jakarta.persistence.jdbc.user,值屬性為user。對(duì)于密碼,我將設(shè)置屬性名屬性為jakarta.persistence.jdbc.password,值屬性為password。
最后,我將添加另一個(gè)屬性,導(dǎo)致我的實(shí)體的表在數(shù)據(jù)庫(kù)中為我生成。我將設(shè)置屬性名屬性為jakarta.persistence.schema-generation.database.action,值屬性為create。這個(gè)屬性的結(jié)果是在數(shù)據(jù)庫(kù)中為我創(chuàng)建Employee表。另一個(gè)選擇是將這個(gè)屬性設(shè)置為drop-and-create(當(dāng)我在創(chuàng)建一個(gè)實(shí)體的定義過程中,還沒有最終確定我的模式時(shí),我喜歡設(shè)置這個(gè)值)。
最終的persistence.xml文件應(yīng)該是這樣的。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <persistence xmlns="http://jakarta.ee/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jakarta.ee/xml/ns/persistence //jakarta.ee/xml/ns/persistence/persistence_3_0.xsd" version="3.0"> <persistence-unit name="default"> <class>entity.Employee</class> <properties> <property name="jakarta.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/> <property name="jakarta.persistence.jdbc.url" value="jdbc:hsqldb:file:target/myDB;shutdown=true"/> <property name="jakarta.persistence.jdbc.user" value="user"/> <property name="jakarta.persistence.jdbc.password" value="password"/> <property name="jakarta.persistence.schema-generation.database.action" value="create"/> </properties> </persistence-unit> </persistence>
下一章節(jié)將講解如何運(yùn)行Jakarta Persistence應(yīng)用程序
好了這就是今天的內(nèi)容了,如果今天的文章未解決你的需求,可點(diǎn)擊獲取更多免費(fèi)教程。不要忘了在評(píng)論與我們分享您的想法和建議,慧都作為IntelliJ IDEA正版合作商!現(xiàn)IntelliJ正版授權(quán)在線訂購(gòu)最高立減3000元!低至1333!還有多種授權(quán)方式供你選擇。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: