spring data jpa 小白翻譯一(僅做自己筆記,如有疏漏可以交流,創建EntityManagerFactory)

javax.persistence.EntityManagerFactory(I)
用於與持久性單元的實體管理器工廠交互的接口。

當應用程序完成使用實體管理器工廠和/或應用程序關閉時,應用程序應關閉實體管理器工廠。 一旦EntityManagerFactory關閉,其所有實體管理器都被視爲處於關閉狀態。

javax.persistence.Persistence

提供對EntityManagerFactory的訪問的Bootstrap類(是由Bootstrap classLoader加載的)。

javax.persistence.Persistence.createEntityManagerFactory(String persistenceUnitName)

爲命名的持久性單元創建並返回EntityManagerFactory。

javax.persistence.spi.PersistenceProvider(I)


由持久性提供程序實現的接口。

它由Java EE環境中的容器和Java SE環境中的javax.persistence.Persistence類調用,以創建javax.persistence.EntityManagerFactory。

javax.persistence.spi.PersistenceProvider.createEntityManagerFactory(String emName, Map map)

要創建EntityManagerFactory時由Persistence類調用。

org.hibernate.jpa.HibernatePersistenceProvider

Hibernate PersistenceProvider實現

org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(String persistenceUnitName, Map properties)

要創建EntityManagerFactory時由Persistence類調用。

org.hibernate.jpa.boot.spi.EntityManagerFactoryBuilder()(I)

表示用於構建Hibernate EntityManagerFactory的兩階段JPA引導過程。 第一階段是實例化此構建器的過程。 在第一階段,強烈建議不要加載類引用。 第二階段是通過構建構建EntityManagerFactory實例。 如果在任一階段出現任何問題並且需要中止引導過程,則應調用cancel()。

org.hibernate.jpa.boot.internal.PersistenceXmlParser

由Hibernate用於解析SE環境中的persistence.xml文件。org.hibernate.boot.registry.classloading.spi.ClassLoaderService

用於與類加載器交互的服務。org.hibernate.boot.registry.classloading.spi.ClassLoaderService.locateResources(String name)(這裏居然寫死了"META-INF/persistence.xml")

按名稱查找一系列資源(類路徑查找)。

org.hibernate.jpa.boot.internal.ParsedPersistenceXmlDescriptor

描述從persistence.xml文件中的<persistence-unit />元素收集的信息,無論是由Hibernate直接解析還是由EE容器作爲javax.persistence.spi.PersistenceUnitInfo傳遞給我們。 更容易將兩個視圖合併爲單個合同,並通過該共享合同提取信息。

org.hibernate.jpa.boot.spi.Bootstrap

進入bootstrap流程org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.EntityManagerFactoryBuilderImpl

首先,我們構建boot-strap服務註冊表,主要處理類加載器交互和主要服務註冊表。 這是開始添加配置值等所必需的.

接下來,我們構建所有配置值的合併映射,將所有合併的配置值添加到服務註冊表生成器中

接下來我們在元數據處理中進行初步傳遞,其中包括:
1)掃描
2)建立Jandex指數
3)構建“元數據源”以便以後用於構建SessionFactory

推動類信息給環境; 暫時這隻對EE容器情況有影響,回調到PersistenceUnitInfo#addClassTransformer

org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl

這是EntityManagerFactoryBuilder()的實現

org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build()

創建EntityManagerFactory實例

實現注意:此處的TCCL處理是臨時的。
這是必需的,因爲這段代碼仍然使用Hibernate Configuration和Hibernate commons-annotations
反過來依賴於TCCL的設定。

至此EntityManagerFactory創建完畢,該EntityManagerFactory包含五個成分

org.hibernate.engine.spi.SessionFactoryImplementor

定義SessionFactory和Hibernate的其他部分之間的內部契約,例如Type的實現者。

org.hibernate.cfg.Configuration

Configuration的實例允許應用程序指定在創建SessionFactory時要使用的屬性和映射文檔。 通常,應用程序將創建單個Configuration,構建SessionFactory的單個實例,然後在爲客戶端請求提供服務的線程中實例化Sessions。 配置僅用作初始化時間對象。 SessionFactorys是不可變的,不會保留與Configuration的任何關聯。
默認情況下,新配置將使用hibernate.properties中指定的屬性。

注意:這將在4.0版本之後使用org.hibernate.boot.registry.StandardServiceRegistryBuilder和org.hibernate.metamodel.MetadataSources替換,此時此類將被棄用並計劃在5.0中刪除。 有關詳細信息,請參見HHH-6183,HHH-2578和HHH-6586


以上的東西谷歌翻譯出來的,有(I)的必然是接口,其他可能是接口,也可能不是接口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章