更新時(shí)間:2022-10-25 10:12:39 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3221次
相信大家對(duì)持久化對(duì)象的概念已經(jīng)有所了解,數(shù)據(jù)持久性是應(yīng)用程序從非易失性存儲(chǔ)系統(tǒng)中持久化和檢索信息的一種方式。由于需要訪(fǎng)問(wèn)關(guān)系數(shù)據(jù)庫(kù),持久性對(duì)于企業(yè)應(yīng)用程序至關(guān)重要。為此環(huán)境開(kāi)發(fā)的應(yīng)用程序必須自己管理持久性或使用第三方解決方案來(lái)處理具有持久性的數(shù)據(jù)庫(kù)更新和檢索。自 EJB 3.0 規(guī)范以來(lái),Java™ Persistence API (JPA) 提供了一種用于管理持久性和對(duì)象關(guān)系映射和函數(shù)的機(jī)制。

JPA 規(guī)范在內(nèi)部定義了對(duì)象關(guān)系映射,而不是依賴(lài)于供應(yīng)商特定的映射實(shí)現(xiàn)。JPA 基于適用于 Java Enterprise Edition (Java EE) 環(huán)境的 Java 編程模型,但 JPA 可以在 Java SE 環(huán)境中運(yùn)行以測(cè)試應(yīng)用程序功能。
JPA 代表了持久性編程模型的簡(jiǎn)化。JPA 規(guī)范明確定義了對(duì)象關(guān)系映射,而不是依賴(lài)于供應(yīng)商特定的映射實(shí)現(xiàn)。JPA 通過(guò)使用注釋或 XML 將對(duì)象映射到數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表中來(lái)標(biāo)準(zhǔn)化對(duì)象關(guān)系映射的重要任務(wù)。進(jìn)一步簡(jiǎn)化持久化編程模型:
EntityManager API 可以持久化、更新、檢索或從數(shù)據(jù)庫(kù)中刪除對(duì)象。
EntityManager API 和對(duì)象關(guān)系映射元數(shù)據(jù)處理大多數(shù)數(shù)據(jù)庫(kù)操作,而無(wú)需您編寫(xiě) JDBC 或 SQL 代碼來(lái)維護(hù)持久性。
JPA 提供了一種查詢(xún)語(yǔ)言,擴(kuò)展了獨(dú)立的 EJB 查詢(xún)語(yǔ)言(也稱(chēng)為 JPQL),您可以使用它來(lái)檢索對(duì)象,而無(wú)需編寫(xiě)特定于您正在使用的數(shù)據(jù)庫(kù)的 SQL 查詢(xún)。
JPA 旨在在 Java Enterprise Edition (Java EE) 容器的內(nèi)部和外部運(yùn)行。當(dāng)您在容器內(nèi)運(yùn)行 JPA 時(shí),應(yīng)用程序可以使用容器來(lái)管理持久性上下文。如果沒(méi)有容器來(lái)管理 JPA,則應(yīng)用程序必須自己處理持久性上下文管理。為容器管理的持久性設(shè)計(jì)的應(yīng)用程序不需要太多的代碼實(shí)現(xiàn)來(lái)處理持久性,但這些應(yīng)用程序不能在容器之外使用。管理自己的持久性的應(yīng)用程序可以在容器環(huán)境或 Java SE 環(huán)境中運(yùn)行。
支持 EJB 3.x 編程模型的 Java EE 容器必須支持 JPA 實(shí)現(xiàn),也稱(chēng)為持久性提供程序。JPA 持久性提供程序使用以下元素在 EJB 3.x 環(huán)境中實(shí)現(xiàn)更輕松的持久性管理:
持久化單元
定義一個(gè)完整的對(duì)象-關(guān)系模型映射 Java 類(lèi)(實(shí)體 + 支持結(jié)構(gòu))與關(guān)系數(shù)據(jù)庫(kù)。EntityManagerFactory 使用此數(shù)據(jù)創(chuàng)建可以通過(guò) EntityManager 訪(fǎng)問(wèn)的持久性上下文。
實(shí)體管理器工廠(chǎng)
用于為數(shù)據(jù)庫(kù)交互創(chuàng)建 EntityManager。應(yīng)用程序服務(wù)器容器通常提供此功能,但如果您使用 JPA 應(yīng)用程序管理的持久性,則需要 EntityManagerFactory。EntityManagerFactory 的實(shí)例表示持久性上下文。
持久性上下文
定義應(yīng)用程序當(dāng)前正在操作的活動(dòng)實(shí)例集。您可以手動(dòng)或通過(guò)注入創(chuàng)建持久性上下文。
實(shí)體管理器
維護(hù)應(yīng)用程序正在使用的實(shí)體對(duì)象的活動(dòng)集合的資源管理器。EntityManager 處理對(duì)象關(guān)系映射的數(shù)據(jù)庫(kù)交互和元數(shù)據(jù)。EntityManager 的一個(gè)實(shí)例代表一個(gè) Persistence 上下文。容器中的應(yīng)用程序可以通過(guò)注入應(yīng)用程序或在 Java 組件名稱(chēng)空間中查找來(lái)獲取 EntityManager。如果應(yīng)用程序管理其持久性,則從 EntityManagerFactory 獲得 EntityManager。
實(shí)體對(duì)象
一個(gè)簡(jiǎn)單的 Java 類(lèi),它以最簡(jiǎn)單的形式表示數(shù)據(jù)庫(kù)表中的一行。實(shí)體對(duì)象可以是具體類(lèi)或Java抽象類(lèi)。它們通過(guò)使用屬性或字段來(lái)維護(hù)狀態(tài)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)