日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JPA和Hibernate的关系(转)

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JPA和Hibernate的关系(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JPA Java Persistence API,是Java EE 5的標準ORM接口,也是ejb3規范的一部分。

Hibernate,當今很流行的ORM框架,是JPA的一個實現,但是其功能是JPA的超集。

JPA和Hibernate之間的關系,可以簡單的理解為JPA是標準接口,Hibernate是實現。那么Hibernate是如何實現與JPA的這種關系的呢。Hibernate主要是通過三個組件來實現的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。

hibernate-annotation是Hibernate支持annotation方式配置的基礎,它包括了標準的JPA annotation以及Hibernate自身特殊功能的annotation。

hibernate-core是Hibernate的核心實現,提供了Hibernate所有的核心功能。

hibernate-entitymanager實現了標準的JPA,可以把它看成hibernate-core和JPA之間的適配器,它并不直接提供ORM的功能,而是對hibernate-core進行封裝,使得Hibernate符合JPA的規范。

下面重點介紹一下hibernate-entitymanager包的主要類及實現。

HibernatePersistence.java, 實現了JPA的PersistenceProvider接口,它提供createEntityManagerFactory和 createContainerEntityManagerFactory兩個方法來創建EntityManagerFactory對象,這兩個方法底層都是調用的EJB3Configuration對象的buildEntityManagerFactory方法,來解析JPA配置文件persistence.xml,,并創建EntityManagerFactory對象。

EntityManagerFactory對象的實現是EntityManagerFactoryImpl類,這個類有一個最重要的private屬性就是Hibernate的核心對象之一SessionFactory。這個類最重要的方法是createEntityManager,來返回EntityMnagaer對象,而sessionFactory屬性也傳入了該方法。

EntityManager對象的實現是EntityManagerImpl類,這個類繼承自AbstractEntityManagerImpl類,在AbstractEntityManager類中有一個抽象方法getSession來獲得Hibernate的Session對象,正是在這個Session對象的實際支持下,EntityManagerImpl類實現了JPA的EntityManager接口的所有方法,并完成實際的ORM操作。

此外,hibernate-entitymanager 包中還有QueryImpl類利用EntityManagerImpl的支持實現了JPA的Query接口;TransactionImpl利用 EntityManagerImpl的支持實現了JPA的EntityTransaction接口。

至此,Hibernate通過hibernate-entitymanager包完成了對于JPA的全部支持工作。

最后,補充一個讓我感到意外的問題:

JPA 中的Query對象的getSingleResult()方法,當查詢不到結果時,拋出NoResultException、當查詢到多個結果時,拋出 NonUniqueResultException;并且NoResultException和NonUniqueResultException都是 RuntimeException。

?

原文網址:http://hi.baidu.com/tianpaomian/blog/item/fd618bdeed8ef55394ee375d.html

轉載于:https://www.cnblogs.com/mutouyaya/p/4917180.html

總結

以上是生活随笔為你收集整理的JPA和Hibernate的关系(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。