【转自:http://freewind.me/blog/20111129/588.html 】

我知道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的即可”。

Hibernate与Jpa的关系(1)的更多相关文章

  1. Hibernate与Jpa的关系(2)

    [转自:http://blog.163.com/hero_213/blog/static/398912142010312024809/ ] 近年来ORM(Object-Relational Mappi ...

  2. Hibernate与Jpa的关系

    JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JPA的总体思想和现有Hibernate.T ...

  3. [转]Hibernate与Jpa的关系,终于弄懂

    原文地址:http://blog.sina.com.cn/s/blog_5f1619e80100yoxz.html 我知道Jpa是一种规范,而Hibernate是它的一种实现.除了Hibernate, ...

  4. Hibernate与Jpa的关系,终于弄懂

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

  5. (转载)Hibernate与Jpa的关系

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

  6. Hibernate和Jpa的关系

    http://blog.sina.com.cn/s/blog_5f1619e80100yoxz.html Jpa是规范,Hibernate是实现,使用Hibernate的时候一定会使用到Jpa

  7. 转:spring data jpa、 hibernate、 jpa 三者之间的关系

    原文链接:spring data jpa. hibernate. jpa 三者之间的关系 spring data jpa hibernate jpa 三者之间的关系 JPA规范与ORM框架之间的关系是 ...

  8. JPA和Hibernate到底是什么关系???

    转自:https://www.cnblogs.com/mosoner/p/9494250.html 在学习框架的过程中,发现学的东西很多,但是感觉他们之间的联系区别都不是很了解,知道JPA可以去实现持 ...

  9. spring data jpa、 hibernate、 jpa 三者之间的关系

    http://www.cnblogs.com/xiaoheike/p/5150553.html JPA规范与ORM框架之间的关系是怎样的呢? JPA规范本质上就是一种ORM规范,注意不是ORM框架-- ...

随机推荐

  1. DataTable源码分析(二)

    DataTable源码分析(二) ===================== DataTable函数分析 ---------------- DataTable作为整个插件的入口,完成了整个表格的数据初 ...

  2. 高性能MySQL--索引学习笔记(原创)

    看过一些人写的学习笔记,完全按书一字不漏照抄,内容很多,真不能叫笔记.遂自己整理了一份,取其精要. 更多笔记请访问@个人简书 [toc] 索引概述 索引即key 在存储引擎层实现,不同引擎工作方式不同 ...

  3. java小题:福尔摩斯的约会

    原题地址:https://www.nowcoder.com/pat/6/problem/4040 防止广告嫌疑,原题为: 题目描述 大侦探福尔摩斯接到一张奇怪的字条:"我们约会吧! 3485 ...

  4. python去除文本中的HTML标签

    def SplitHtmlTag(file): with open(file,"r") as f,open("result.txt","w+" ...

  5. ubuntu12.04.5安装openssh-server所引发的血案

    刚安装好的ubuntu12.04.5在安装openssh-server之后,安装其他软件都安装不了,如下: root@ubuntu:/home/lancer/software/ssh# apt-get ...

  6. GitHub上非常受开发者欢迎的iOS开源项目(二)

    "每一次的改变总意味着新的开始."这句话用在iOS上可谓是再合适不过的了.GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x ...

  7. Why we don’t recommend using List<T> in public APIs

    不推荐List<T>做API原因有如下两点:1.首先List<T> 设计之初就没有设计成可扩展的,我们不能重新其任何方法.这就意味着,我们操作List<T>的时候却 ...

  8. 《JavaScript面向对象编程指南(第2版)》读书笔记(一)

    目录 一.对象 1.1 获取属性值的方式 1.2 获取动态生成的属性的值 二.数组 2.1 检测是否为数组 2.2 增加数组长度导致未赋值的位置为undefined 2.3 用闭包实现简易迭代器 三. ...

  9. 商城项目实战 | 2.1 Android 仿京东商城——自定义 Toolbar (一)

    前言 本文为菜鸟窝作者刘婷的连载."商城项目实战"系列来聊聊仿"京东淘宝的购物商城"如何实现. 现在很多的 APP 里面都有自己的自定义风格,特别是京东商城中自 ...

  10. 【渗透测试】PHPCMS9.6.0 任意文件上传漏洞+修复方案

    这个漏洞是某司的一位前辈发出来的,这里只是复现一下而已. 原文地址:https://www.t00ls.net/thread-39226-1-1.html 首先我们本地搭建一个phpcms9.6.0的 ...