1.JPA

JPA全称: Java Persistence API
  JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
  JPA的出现?
  JPA的出现有两个原因:
  其一,简化现有Java EE和Java SE应用的对象持久化的开发工作;
  其二,Sun希望整合对ORM技术,实现持久化领域的统一。

1.1.JPA提供的技术
  (1)ORM映射元数据
  JPA支持XML和JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持
  久化到数据库表中;
  (2)JPA 的API
  用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解
  脱出来。
  (3)查询语言
  通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。

2. Hibernate

JPA是需要Provider来实现其功能的,Hibernate就是JPA Provider中很强的一个。从功能上来说,JPA现在就是Hibernate功能的一个子集。Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的 JPA(Java  Persistence API) 兼容认证。

例如:

(1)实体对象的状态,在Hibernate有自由、持久、游离三种,JPA里有new,managed,detached,removed,而这些状态都是一一对应的。

(2)flush方法,都是对应的,

(3)Query query = manager.createQuery(sql),它在Hibernate里写法上是session,而在JPA中变成了  manager

3.  JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。

那么Hibernate是如何实现与JPA 的这种关系的呢?

Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。

(1)hibernate-annotation是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及  Hibernate自身特殊功能的annotation。

(2)hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能。

(3)hibernate-entitymanager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。

  总的来说,JPA是规范,Hibernate是框架,JPA是持久化规范,而Hibernate实现了JPA。

最新文章

  1. PHP入门 - - 07-->HTML的表单
  2. 四则运算2--c++
  3. HDU 1025 Constructing Roads In JGShining's Kingdom(DP+二分)
  4. MySQL锁机制
  5. lnmp安装--php与nginx结合
  6. Android学习手记(5) 基本UI布局
  7. android:layout_weight属性的简单使用
  8. C++箴言:避免构造或析构函数中调用虚函数
  9. zepto animate
  10. Linux: 安装和启用firefox浏览器的java
  11. .24-浅析webpack源码之事件流compilation(2)
  12. 洛谷 P1564 膜拜
  13. Spock - Document -06 - Modules
  14. 5_bash
  15. [Hibernate] 分页查询
  16. xmanager运行报错:bash: /usr/bin/xterm: No such file or directory
  17. mybatis高级映射-一对多
  18. sqli-labs学习笔记 DAY7
  19. 九、双端队列LinkedBlockDeque
  20. OKHttp3学习

热门文章

  1. CLR内存管理
  2. (原创)基于MCU的频率可调,占空比可调的PWM实现(MCU,MCS-51/MSP430)
  3. 在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别
  4. react纯前端不依赖于打包工具的代码
  5. Magcodes.WeiChat——通过CsvFileResult以及DataAnnotations实现导出CSV文件
  6. 客户端缓存 HTML + 远程数据 JS 的思路。
  7. SQL Server使用文件组备份降低备份文件占用的存储空间
  8. APP API如何维护多个版本的一些想法?
  9. javascript 日常总结
  10. paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结