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)的必然是接口,其他可能是接口,也可能不是接口

猜你喜欢

转载自blog.csdn.net/m0_37034934/article/details/81014212