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文件,这里是硬编码的,所以路径和文件名都不能改变。

部分源码如下:

目录
相关文章
|
6月前
|
Java 数据库连接
错误org.hibernate.AnnotationException: No identifier specified for entity
请根据你的实际情况,将实体类中的字段和注解进行适当的调整,以确保每个实体类都有一个明确定义的标识符(主键)。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
76 0
|
6月前
|
Java 数据库连接
JPA - Persistence与EntityManagerFactory简解
JPA - Persistence与EntityManagerFactory简解
230 0
|
Java 应用服务中间件 Spring
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
261 0
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
|
Java
配置jndi服务,javax.naming.NamingException的四种情况
1.当jndi服务没有启动,或者jndi服务的属性没有设置正确,抛出如下异常: javax.naming.CommunicationException: Can't find SerialContextProvider.
2886 0
javax.validation.constraints注解
javax.validation.constraints注解
246 0
|
开发框架 Java 数据库连接
Persistence,EntityManagerFactory和EntityManager
Persistence,EntityManagerFactory和EntityManager
609 0
|
应用服务中间件 Java 关系型数据库
|
XML 消息中间件 网络协议