Hibernate与Jpa的关系

转载 2016年08月30日 18:05:14

我知道Jpa是一种规范,而Hibernate是它的一种实现。除了Hibernate,还有EclipseLink(曾经的toplink),OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实现而不必改动太多代码。

在play中定义Model时,使用的是jpa的annotations,比如javax.persistence.Entity,Table, Column,OneToMany等等。但它们提供的功能基础,有时候想定义的更细一些,难免会用到Hibernate本身的annotation。我当时想,jpa这么弱还要用它干什么,为什么不直接使用hibernate的?反正我又不会换成别的实现。

因为我很快决定不再使用hibernate,这个问题就一直放下了。直到我现在在新公司,做项目要用到Hibernate。

我想抛开jpa,直接使用hibernate的注解来定义Model,很快发现了几个问题:

  1. jpa中有Entity, Table,hibernate中也有,但是内容不同
  2. jpa中有Column,OneToMany等,Hibernate中没有,也没有替代品

我原以为hibernate对jpa的支持,是另提供了一套专用于jpa的注解,但现在看起来似乎不是。一些重要的注解如Column,OneToMany等,hibernate没有提供,这说明jpa的注解已经是hibernate的核心,hibernate只提供了一些补充,而不是两套注解。要是这样,hibernate对jpa的支持还真够足量,我们要使用hibernate注解就必定要使用jpa。

实际情况是不是这样?在被群里(Scala交流群132569382)的朋友鄙视一番却没有给出满意答案的时候,我又想起了万能的stackoverflow,上去提了两个问:

  1. http://stackoverflow.com/questions/8306742/if-i-want-to-use-hibernate-with-annotation-do-i-have-to-use-javax-persistence
  2. http://stackoverflow.com/questions/8306793/why-jpa-and-hibernate-both-have-entity-and-table-annotations

第一个是问如果想用hibernate注解,是不是一定会用到jpa的。网友的回答:“是。如果hibernate认为jpa的注解够用,就直接用。否则会弄一个自己的出来作为补充”

第二个是问,jpa和hibernate都提供了Entity,我们应该用哪个,还是说可以两个一起用?网友回答说“Hibernate的Entity是继承了jpa的,所以如果觉得jpa的不够用,直接使用hibernate的即可”。

tags: hibernate, jpa
posted in Java, 持久层 by Freewind

EJB3.0,JPA,Hibernate之间的关系

EJB3.0,JPA,Hibernate之间的关系
  • lichenju33
  • lichenju33
  • 2017年02月09日 12:35
  • 260

SpringData Jpa、Hibernate、Jpa 三者之间的关系

JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则...
  • u014421556
  • u014421556
  • 2016年09月23日 10:15
  • 13726

Hibernate与JPA的区别是什么

翻译来源:https://www.quora.com/What-is-the-difference-between-Hibernate-and-JPA本文作者:苏生米沿本文地址:问题:Hibernat...
  • sushengmiyan
  • sushengmiyan
  • 2016年09月18日 12:30
  • 11499

spring data jpa hibernate jpa 三者之间的关系

JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由...
  • Heng_Ji
  • Heng_Ji
  • 2017年05月22日 10:36
  • 748

JPA与ORM以及Hibernate

有没有办法让程序员彻底抛弃书写SQL思想,完全的使用面向对象思想开发软件呢? 需要一种可行的ORM框架。 什么是ORM? 不同的数据库使用的SQL语法不同,比如PL/SQL(Oracle)和T/SQL...
  • csdn_main
  • csdn_main
  • 2016年03月10日 15:18
  • 1099

一步步学习Hibernate框架(三):采用jpa实现一对多关联映射(一)

JPA(Java Persistence API)是Sun官方提出的一种Java持久化规范。为Java开发人员提供了一种对象/关系映射工具,管理Java应用中的关系数据。JPA的总体思想和现有Hibe...
  • dandanzmc
  • dandanzmc
  • 2015年02月28日 15:52
  • 3589

Hibernate与Jpa的关系,终于弄懂

我知道Jpa是一种规范,而Hibernate是它的一种实现。除了Hibernate,还有EclipseLink(曾经的toplink),OpenJPA等可供选择,所以使用Jpa的一个好处是,可以更换实...
  • ld513508088
  • ld513508088
  • 2014年03月04日 23:13
  • 3689

混合使用JPA和Hibernate

JPA的出现, 统一了逐渐混乱起来的Java ORM产品, 这无疑是件好事情, 包括toplink, hibernate, kodo,openJPA 等几种ORM实现现在都已经兼容支持JPA了.Hib...
  • intellibiz
  • intellibiz
  • 2007年11月07日 13:33
  • 2710

jdbc、jdbcTemplate、hibernate、jpa、spring之间的关系

JPA 的底层实现是一些流行的开源 ORM 框架,因此JPA其实也就是java实体对象和关系型数据库建立起映射关系,通过面向对象编程的思想操作关系型数据库的规范 Getting started wi...
  • wybqq
  • wybqq
  • 2017年05月12日 23:28
  • 774

用hibernate+注解实现各种关系映射

本文转自:http://blog.csdn.net/bigtree_3721/article/details/42343639 基本环境准备     我们先来看看一个具体的JPA工程示例。...
  • hefangju
  • hefangju
  • 2015年12月22日 23:21
  • 3472
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate与Jpa的关系
举报原因:
原因补充:

(最多只允许输入30个字)