自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JPA與Hibernate的優(yōu)缺點(diǎn)

開發(fā) 后端
JPA(Java Persistence API)是Sun官方提出的Java持久化規(guī)范。它為Java開發(fā)人員提供了一種對(duì)象/關(guān)系映射工具來(lái)管理Java應(yīng)用中的關(guān)系數(shù)據(jù)。本文將對(duì)比JPA與Hibernate的優(yōu)缺點(diǎn)。

Java Persistence API

從 EJB 技術(shù)可以開始應(yīng)用時(shí)起,對(duì)其在實(shí)際應(yīng)用中的可用性就一直存在懷疑。在我看來(lái),產(chǎn)生這種現(xiàn)象最重要的兩個(gè)原因是復(fù)雜性和資源密集性。結(jié)果,隨后出現(xiàn)了比 EJB 更簡(jiǎn)單、具有更小資源空間的框架(比如 Spring 和 Hibernate),并且更快流行開來(lái)。為了說(shuō)明這一點(diǎn),我們注意到 EJB 3.0 規(guī)范的方向相對(duì)以前出現(xiàn)了一個(gè)主要的轉(zhuǎn)變。作為 JSR 220 的一部分,該規(guī)范提供了類似 Plain Old Java Object (POJO) 支持、Dependency Injection(依賴注入)和注釋等功能。現(xiàn)在引入了一組全新的 API:Java Persistence API (JPA),以允許開發(fā)者管理 Java EE(甚至 SE)應(yīng)用程序中的關(guān)系數(shù)據(jù)。另外,Sun 聲稱 Java Persistence API 表現(xiàn)了一些 Hibernate、TopLink(二者都會(huì)在稍后討論)、JDO 以及 EJB 框架中***的想法。

當(dāng)前,GlassFish 項(xiàng)目提供了實(shí)施 JPA 的一個(gè)參考,JPA 在 GlassFish 應(yīng)用程序服務(wù)器中作為 TopLink Essential 部分。您可以在 GlassFish 社區(qū)頁(yè) 找到該 JPA 參考實(shí)施。不要混淆 TopLink Essentials 和 TopLink,前者現(xiàn)在是由 Oracle Corporation 擁有的關(guān)系映射工具。稍后我將在本文中討論 TopLink 框架。

讓我們來(lái)討論一些您應(yīng)該考慮應(yīng)用 JPA 作為持久化框架的應(yīng)用場(chǎng)景。

何時(shí)考慮將JPA作為持久化框架

您選擇從流行的框架(比如 Hibernate、TopLink 和 EJB)中選擇應(yīng)用具有“好用”的功能且基于標(biāo)準(zhǔn)的框架。

您需要輕量級(jí)的持久化框架,且不需要 EJB 的容器提供的服務(wù)。

您需要可以在標(biāo)準(zhǔn)或 Enterprise Java 應(yīng)用程序中使用的持久化框架。

何時(shí)考慮JPA的備選方案

您使用的 Java 的版本決定了實(shí)際是否可以應(yīng)用 JPA。JPA 是 EJB 3.0 規(guī)范的一部分,而該規(guī)范是 Java EE 5 版本的一部分。如果您未更新到 Java EE 5,則無(wú)法使用 JPA。

您的應(yīng)用程序需要 JPA 無(wú)法提供的服務(wù),比如那些由 EJB 容器提供的服務(wù),在那些情況下您更依賴 EJB。

在結(jié)束對(duì)此框架的討論前,讓我們列出一些使用 JPA 作為持久化框架的優(yōu)勢(shì)和缺點(diǎn)。

JPA有什么優(yōu)勢(shì)?

JPA 是基于標(biāo)準(zhǔn)的。越來(lái)越多的提供商期待在不久的將來(lái)提供 JPA 實(shí)施。

它提供了 Hibernate 和 TopLink 中***的功能。

它可以和 Java SE 和 Java EE 應(yīng)用程序一起使用,需要使用 EJB 容器,也可以不要。

JPA有什么缺點(diǎn)?

由于非常新,JPA 規(guī)范可能還需要進(jìn)過(guò)重要發(fā)展才會(huì)變得很穩(wěn)定。

JPA 是一個(gè)規(guī)范而不是一個(gè)產(chǎn)品。您需要提供商提供一個(gè)實(shí)施,才能獲得這些基于標(biāo)準(zhǔn)的 API 的優(yōu)勢(shì)。

Hibernate

Hibernate 是一個(gè)對(duì)象持久化框架,簡(jiǎn)化了 Java 應(yīng)用程序和底層關(guān)系數(shù)據(jù)庫(kù)之間的對(duì)象關(guān)系映射。方法是提供 POJO 的透明持久化,作為“中介”層來(lái)提供自動(dòng)持久化,并從 Java 應(yīng)用程序加載對(duì)象到數(shù)據(jù)庫(kù)表。借助 Hibernate,保存對(duì)象狀態(tài)到數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)加載對(duì)象狀態(tài)與調(diào)用 Java 對(duì)象中的方法一樣容易。您無(wú)需從您的應(yīng)用程序代碼中管理底層的數(shù)據(jù)操作;Hibernate 框架會(huì)為您完成所有的中間步驟。

讓我們討論一些您將會(huì)考慮應(yīng)用 Hibernate 作為持久化框架的應(yīng)用場(chǎng)景,以及那些您將尋求備選方案的應(yīng)用場(chǎng)景。

何時(shí)使用Hibernate作為持久化框架

您正在尋求一個(gè)簡(jiǎn)單的持久化框架,該框架容易學(xué)習(xí)和使用。在您能夠?qū)嶋H開始持久化您的 Java 對(duì)象到目標(biāo)數(shù)據(jù)庫(kù)之前,您只需要了解幾個(gè)映射配置文件。

您正在尋求一個(gè)非常普通和靈活的持久化框架。Hibernate 的用法非常靈活:無(wú)論是否有應(yīng)用程序服務(wù)器都可以使用,無(wú)論是否有關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)也可以使用。

您不想支付獲取和維護(hù)費(fèi)用。Hibernate 是開源而且免費(fèi)的。

Hibernate 框架非常值得應(yīng)用,因?yàn)樗浅:?jiǎn)單和靈活,同時(shí)也很強(qiáng)大。但是,在以下一些應(yīng)用場(chǎng)景中您可能想要考慮應(yīng)用其他框架。

何時(shí)考慮Hibernate的備選框架

您還不想要其他框架。盡管簡(jiǎn)單,Hibernate 框架仍然有自己的學(xué)習(xí)曲線、維護(hù)/更新周期,等等。

您需要容器提供的服務(wù),比如那些由 EJB 提供的服務(wù),在那些情況下您的選擇局限于 EJB。

如果您正在使用或計(jì)劃使用 Hibernate 作為您的持久化框架,這里是一些它的優(yōu)勢(shì)和缺點(diǎn)。

Hibernate有什么優(yōu)勢(shì)?

Hibernate 易于學(xué)習(xí)和使用。正如我在上面提到的,在您可以使用它之前,您只需要了解幾個(gè)簡(jiǎn)單、自我描述的配置文件。

它 非常靈活。您可以在任何需要持久化服務(wù)的應(yīng)用程序架構(gòu)中使用 Hibernate。您可以通過(guò) Servlet 和/或 Enterprise Java Bean 在 Standard Java 應(yīng)用程序、Enterprise Java 應(yīng)用程序中使用它。它也可以和 Spring 框架很好地集成。

它可以很好地向上擴(kuò)展,因?yàn)樗辉O(shè)計(jì)為從底層一直到集群環(huán)境中工作。通過(guò)類似 Lazy Initialization 的技術(shù)以及通過(guò) CGLIB 運(yùn)行時(shí)間字節(jié)代碼生成庫(kù)優(yōu)化 Java 反射,***版的 Hibernate 的性能也得到了加強(qiáng)。

Hibernate有什么缺點(diǎn)?

Hibernate 是另一個(gè)擁有自己的應(yīng)用和維護(hù)周期的框架。

盡管有積極的社區(qū)支持,但是有時(shí)候缺乏專注于此產(chǎn)品的提供商也使得宣傳應(yīng)用此框架顯得沒(méi)有說(shuō)服力。

【編輯推薦】

  1. 關(guān)于Java反射機(jī)制的一個(gè)實(shí)例
  2. 在Java應(yīng)用程序中使用Jfreechart配置
  3. 淺談為什么Java接口中不允許定義變量
  4. Java的異常和斷言學(xué)習(xí)筆記
  5. 關(guān)于Java繼承的一些復(fù)習(xí)
責(zé)任編輯:彭凡 來(lái)源: javaeye
相關(guān)推薦

2009-06-15 09:57:46

HibernateIBatis

2009-09-24 09:18:18

2024-01-04 08:00:22

時(shí)序數(shù)據(jù)庫(kù)項(xiàng)目

2019-04-16 13:12:52

2011-07-11 09:32:54

VMware ToolVMware性能

2010-01-06 15:45:12

2021-10-09 09:52:17

云存儲(chǔ)公共云遷移

2010-06-01 19:33:53

SVN與CVS優(yōu)缺點(diǎn)

2011-08-19 09:21:42

2020-07-10 11:30:29

組合式架構(gòu)傳統(tǒng)存儲(chǔ)存儲(chǔ)

2012-07-13 15:29:49

2018-12-11 10:59:35

Tomcat NginxApache

2021-10-06 23:31:45

HibernateJPASpring Data

2018-05-17 11:05:56

2020-01-09 10:44:47

Hadoop 3缺點(diǎn)優(yōu)點(diǎn)

2021-04-12 14:40:50

人臉識(shí)別面部識(shí)別人工智能

2010-06-21 14:14:33

OSPF協(xié)議

2022-07-18 13:36:13

零信任網(wǎng)絡(luò)安全

2017-11-17 10:46:13

NginxApache服務(wù)器

2010-05-31 14:42:14

SVN與CVS優(yōu)缺點(diǎn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)