Persistence 与HibernatePersistence详解

简介: javax.persistence.Persistence暴露出来了两个方法:public static EntityManagerFactory createEntityManagerFactory(String ...

javax.persistence.Persistence暴露出来了两个方法:

public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName)

public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName, Map properties)  

这两个方法会在classpath对应的路径下查找 META-INF/services/javax.persistence.spi.PersistenceProvider 这个资源,然后读取内容。

这个资源存放的是一个PersistenceProvider接口的一个实现类的完整类名。

然后实例通过反射实例化这个实现类,然后执行其 createEntityManagerFactory,然后返回该方法的执行结果。


org.hibernate.ejb.HibernatePersistence 中只有两个方法:

public EntityManagerFactory createEntityManagerFactory(String persistenceUnitName, Map overridenProperties)

public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map map)

这两个方法内部都会实例化一个Ejb3Configuration的实例,然后调用其configure方法。然后执行这个对象的buildEntityManagerFactory方法,并返回这个方法的执行结果。

这个configure方法内部会读取classpath对应目录下的META-INF下的persistence.xml文件,这里是硬编码的,所以路径和文件名都不能改变。

部分源码如下:

目录
相关文章
|
5月前
|
Java 数据库连接
JPA - Persistence与EntityManagerFactory简解
JPA - Persistence与EntityManagerFactory简解
194 0
|
Java 应用服务中间件 Spring
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
240 0
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
|
Java Maven
关于org.springframework.cloud.context.named.NamedContextFactory$Specification 的问题!
关于org.springframework.cloud.context.named.NamedContextFactory$Specification 的问题!
394 0
关于org.springframework.cloud.context.named.NamedContextFactory$Specification 的问题!
javax.validation.constraints注解
javax.validation.constraints注解
236 0
|
Java
配置jndi服务,javax.naming.NamingException的四种情况
1.当jndi服务没有启动,或者jndi服务的属性没有设置正确,抛出如下异常: javax.naming.CommunicationException: Can't find SerialContextProvider.
2839 0
|
Web App开发 Java 数据库连接
javax.validation.ValidationException: Unable to create a Configuration
错误信息: [org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean]-Failed to set up a Bean Validation provider javax.
3556 0
|
开发框架 Java 数据库连接
Persistence,EntityManagerFactory和EntityManager
Persistence,EntityManagerFactory和EntityManager
584 0
|
应用服务中间件 Java 关系型数据库