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

部分源码如下:

Persistence 与HibernatePersistence详解相关推荐

  1. [转] @JoinColumn 详解 (javax.persistence.JoinColumn)

    原文链接:@JoinColumn详解  原文标的也是转载,但是没有注明原文链接,看起来乱乱的,所以整理一下转载过来,顺便细看一下 1. 一对一 现假设有Person表和Address表,是一对一的关系 ...

  2. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  3. Ehcache配置参数详解

    ehcache配置参数详解 <?xml version="1.0" encoding="UTF-8"?><ehcache><dis ...

  4. Java消息服务JMS详解

    2019独角兽企业重金招聘Python工程师标准>>> JMS: Java消息服务(Java Message Service) JMS是用于访问企业消息系统的开发商中立的API.企业 ...

  5. Hibernate配置详解

     一.简单介绍   Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate ...

  6. redis php 持久化,详解Redis RDB持久化、AOF持久化,

    详解Redis RDB持久化.AOF持久化, 1.持久化 1.1 持久化简介 持久化(Persistence),持久化是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永 ...

  7. Spring事务管理(详解+实例)

    写这篇博客之前我首先读了<Spring in action>,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下: ...

  8. SpringBoot注解最全详解(整合超详细版本)

    今日推荐强制双休!腾讯调整加班机制,21 点前必须离开工位 使用雪花id或uuid作为Mysql主键,被老板怼了一顿! 盘点 12 个 GitHub 上的高仿项目 CTO 说了,用错 @Autowir ...

  9. linux 之RAID详解

    主要内容:  一. RAID详解  二. mdadm工具介绍  三. 创建一个RAID的基本过程  四. 磁盘阵列的管理  五. RAID优化 RAID详解: 描述:RAID:(Redundant A ...

最新文章

  1. mysql数据更新回退_Mysql的几个灵魂拷问(一)
  2. 2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面)
  3. [密码学] 复杂性理论基础
  4. c语言 如何创建adt_C语言探索之旅 | 第二部分第六课:创建你自己的变量类型
  5. ALV中动态内表+行转化为列
  6. 1005 矩阵快速幂
  7. Java语法基础50题训练(上)
  8. 线性结构常规操作(四)
  9. oracle r11,Oracle XML Publisher在Oracle R11i中的实际运用
  10. npm突然找不到D:\nodejs\node_modules\npm\bin\npm-cli.js的解决方法
  11. 字符串的HashCode可能相同
  12. c++ findpeaks函数_C++实现MATLAB一维数组函数findpeaks()函数求一维离散值极值(波峰波谷)...
  13. 已解决-改变macOS和Windows双系统的默认启动顺序
  14. 比犀利哥更经典的话语
  15. HBase源码阅读(一) balancer
  16. Could NOT find Vulkan (missing: Vulkan_LIBRARY Vulkan_INCLUDE_DIR) | 解压安装
  17. java jcmd,JVM工具_jcmd
  18. CLion 的 Debug 模式是怎么回事
  19. 支付宝公众平台 接口
  20. 20221026使用搜狗翻译在线翻译英文文档的评测

热门文章

  1. VSCode插件位置
  2. javaweb洗衣店系统ssh
  3. 2022大规模电商图上的风险商品检测
  4. VS2008 web组件 安装失败 解决方案
  5. SEO优化:输出优质原创文章
  6. WebDriver学习笔记(八)windows弹窗(警告弹窗)处理
  7. Python NetworkX
  8. 关于MUSIC算法的一些资料
  9. PhotoView的使用
  10. openstack windows 10 image - windows 10 镜像制作