我知道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,很快发现了几个问题:
jpa中有Entity, Table,hibernate中也有,但是内容不同
jpa中有Column,OneToMany等,Hibernate中没有,也没有替代品
我原以为hibernate对jpa的支持,是另提供了一套专用于jpa的注解,但现在看起来似乎不是。一些重要的注解如Column, OneToMany等,hibernate没有提供,这说明jpa的注解已经是hibernate的核心,hibernate只提供了一些补充,而不是两 套注解。要是这样,hibernate对jpa的支持还真够足量,我们要使用hibernate注解就必定要使用jpa。
实际情况是不是这样?在被群里(Scala交流群132569382)的朋友鄙视一番却没有给出满意答案的时候,我又想起了万能的stackoverflow,上去提了两个问:
http://stackoverflow.com/questions/8306742/if-i-want-to-use-hibernate-with-annotation-do-i-have-to-use-javax-persistence
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的即可”。
- 浏览: 317562 次
- 性别:
- 来自: 北京
最新评论
-
钱小白:
很棒,解决了我的问题
jackson把null替换为" "的2种方式 -
jee322:
给你推荐一个分布式:http://blog.sina.com. ...
【dubbo】分布式服务框架の简单认识 -
zhangliguoaccp:
thanks
jackson把null替换为" "的2种方式 -
corelengine:
这个比较常用,支持你
jackson把null替换为" "的2种方式 -
java-lxm:
清晰
Spring初始化Bean状态
相关推荐
Hibernate之JPA注解
本项目为“基于Java的...项目利用Hibernate和JPA技术,为开发者提供了一套完整的持久层解决方案,支持对象关系映射(ORM)和数据持久化操作,适用于各种Java应用场景。项目结构清晰,代码注释详尽,易于理解和集成。
JPA和Hibernate的关系,JPA:Java Persistence APIJPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Spring Hibernate JPA与常用JAR包详解,非常全面,将每个包的依赖包也有详细的说明
ORM是对象关系映射的缩写,它将Java世界中的对象与关系数据库世界中的记录相关联。 Hibernate是开源的。它在以下站点上发布。 Hibernate和JPA JPA(Java持久性API)作为处理关系数据库的框架存在于Java EE中。 ...
现在引入了一组全新的 API:Java Persistence API JPA 以允许开发者管理 Java EE(甚至 SE)应用程序中的关系数据 另外 Sun 声称 Java Persistence API 表现了一些 Hibernate TopLink(二者都会在稍后讨论) JDO ...
hibernate的中关系映射分为一对一、一对多、多对一、多对多,其中有单双向之分。而一对一还有主键和外键区分。一共是九种。分别用xml配置文件和annotation实现。annotation的版本没有写测试程序,见谅。
aba-hibernate-jpa-v1 使用 hibernate 4、JPA 2 和 Spring 3 的项目。该项目旨在验证实体之间的关系。 使用的数据源是 H2 类型。
示例应用程序演示了如何将Hibernate用作Spring Data JPA的JPA提供程序。 当前演示了以下概念: 概念 描述 看 Spring Data JPA存储库 使用再次执行操作关系数据库 直接EntityManager访问 直接访问JPA ...
CRUD-HibernateJPA JPA: Java Persistence API是标准的Java语言API,它描述了数据持久性框架的通用接口。 JPA是Java规范,指示应如何实现ORM框架。 创建它是为了使这些解决方案标准化。 Hibernate: Hibernate是一...
NULL 博文链接:https://prowl.iteye.com/blog/519618
javafx11-jpa-crud该项目演示了将JavaFX和JPA(Java Persistence API)技术与Hibernate结合使用的桌面应用程序。旨在改善我的逻辑而创建的项目完全是由我开发的,没有任何预先计划。一切都是根据不断出现的需求来...
实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南实用JPA开发指南
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...
│ 开篇词 勇敢走出舒适区,突破自己的技术瓶颈.mp4 ...│ 20 Spring JPA 中的 Hibernate 加载过程与配置项是怎么回事?.mp4 │ 21 Peritence Context 所表达的核心概念是什么?.mp4 │ 22 Seio
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。 JPA支持XML和JDK5.0注解两种元数据的形式。 JPA的总体思想和现有Hibernate、TopLink、...
看板 描述 基于调度系统看板的Web应用。 该程序根据分为以下三个类别的任务来帮助... 指定数据库中实体与表中列参数之间的关系 Java 8 SE: 流API JavaDoc: Servlet,侦听器,注释,哈希密码 HTML: Bootstrap 3.0.
Spring Data JPA是Spring基于Hibernate...如果用过Hibernate或者MyBatis的话,就会知道对象关系映射(ORM)框架有多么方便。但是Spring Data JPA框架功能更进一步,为我们做了 一个数据持久层框架几乎能做的任何事情。
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。