當前位置:學識都>好好學習>考研>

博惠思華Java開發工程師筆試題目及答案

學識都 人氣:2.35W

1。連線資料庫使用JDBC,為什麼又提供了JPA?Hibernate與JPA的關係?

博惠思華Java開發工程師筆試題目及答案

什麼是JPA

Java Persistence API

JPA通過JDK 5.0註解或XML描述物件-關係表的對映關係,並將執行期的實體物件持久化到資料庫中。

Sun引入新的JPA ORM規範出於兩個原因:其一,簡化現有Java EE和Java SE應用的物件持久化的開發工作;其二,Sun希望整合對ORM技術,實現天下歸一。

JPA由EJB 3.0軟體專家組開發,作為JSR-220實現的一部分。但它不囿於EJB 3.0,你可以在Web應用、甚至桌面應用中使用。JPA的宗旨是為POJO提供持久化標準規範,由此可見,經過這幾年的實踐探索,能夠脫離容器獨立執行,方便開發和測試的理念已經深入人心了。目前Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的實現。

JPA的總體思想和現有Hibernate、TopLink,JDO等ORM框架大體一致。總的來說,JPA包括以下3方面的技術:

ORM對映元資料,JPA支援XML和JDK 5.0註解兩種元資料的形式,元資料描述物件和表之間的對映關係,框架據此將實體物件持久化到資料庫表中;

JPA 的API,用來操作實體物件,執行CRUD操作,框架在後臺替我們完成所有的事情,開發者從繁瑣的JDBC和SQL程式碼中解脫出來。

查詢語言,這是持久化操作中很重要的一個方面,通過物件導向而非面向資料庫的查詢語言查詢資料,避免程式的SQL語句緊密耦合。

三、JPA的優勢

1 標準化

JPA 是 JCP 組織釋出的 Java EE 標準之一,因此任何聲稱符合 JPA 標準的框架都遵循同樣的架構,提供相同的訪問 API,這保證了基於JPA開發的企業應用能夠經過少量的修改就能夠在不同的JPA框架下執行。

2 對容器級特性的支援

JPA 框架中支援大資料集、事務、併發等容器級事務,這使得 JPA 超越了簡單持久化框架的侷限,在企業應用發揮更大的作用。

3 簡單易用,整合方便

JPA的主要目標之一就是提供更加簡單的程式設計模型:在JPA框架下建立實體和建立Java 類一樣簡單,沒有任何的約束和限制,只需要使用 ty進行註釋;JPA的框架和介面也都非常簡單,沒有太多特別的規則和設計模式的要求,開發者可以很容易的掌握。JPA基於非侵入式原則設計,因此可以很容易的和其它框架或者容器整合。

4 可媲美JDBC的查詢能力

JPA的查詢語言是物件導向而非面向資料庫的,它以物件導向的自然語法構造查詢語句,可以看成是Hibernate HQL的.等價物。JPA定義了獨特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一種擴充套件,它是針對實體的一種查詢語言,操作物件是實體,而不是關係資料庫的表,而且能夠支援批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能夠提供的高階查詢特性,甚至還能夠支援子查詢。

5 支援物件導向的高階特性

JPA 中能夠支援物件導向的高階特性,如類之間的繼承、多型和類之間的複雜關係,這樣的支援能夠讓開發者最大限度的使用物件導向的模型設計企業應用,而不需要自行處理這些特性在關係資料庫的持久化。

四、JPA的供應商

JPA 的目標之一是制定一個可以由很多供應商實現的API,並且開發人員可以編碼來實現該API,而不是使用私有供應商特有的API。因此開發人員只需使用供應商特有的API來獲得JPA規範沒有解決但應用程式中需要的功能。儘可能地使用JPA API,但是當需要供應商公開但是規範中沒有提供的功能時,則使用供應商特有的API。

1 Hibernate

JPA是需要Provider來實現其功能的,Hibernate就是JPA Provider中很強的一個,目前來說應該無人能出其右。從功能上來說,JPA現在就是Hibernate功能的一個子集。Hibernate 從3.2開始,就開始相容JPA。Hibernate3.2獲得了Sun TCK的JPA(Java Persistence API) 相容認證。