zoukankan      html  css  js  c++  java
  • JPA与Hibernate的关系

    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。

  • 相关阅读:
    [译]JavaScript源码转换:非破坏式与再生式
    [译]ES6中的代理对象
    tensorflow 如何获取graph中的所有tensor name
    python3中的str和bytes
    git submodule 添加 更新 删除 教程
    《重构:改善既有代码的设计》摘抄
    thrift入门教程/thrift资料集合
    将python2代码升级为python3代码最佳实践
    python标准库:subprocess——子进程管理
    安装“python-snappy”遇到“error: command 'x86_64-linux-gnu-gcc' failed with exit status 1”
  • 原文地址:https://www.cnblogs.com/ms-grf/p/7170927.html
Copyright © 2011-2022 走看看