`

Hibernate与Jpa的关系

阅读更多

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

分享到:
评论

相关推荐

    hibernate-jpa-2.1-api-1.0.0.final.jar.zip

    Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来成为了JPA规范的参考实现之一。JPA提供了一套标准API,允许开发者在不依赖特定ORM工具的情况下编写数据库操作代码。而Hibernate通过实现JPA规范...

    hibernate-jpa.jar

    总的来说,Hibernate JPA.jar文件是Java开发者进行企业级应用开发的重要工具,它提供了JPA规范的实现,简化了数据库操作,促进了面向对象编程与关系型数据库之间的无缝集成。通过深入理解和熟练运用Hibernate JPA,...

    hibernate_ jpa.jar

    Hibernate JPA,全称为Java Persistence API,是Java领域中用于管理数据库对象的一种规范,它为Java应用程序提供了统一的ORM(对象关系映射)解决方案。Hibernate作为JPA的一个实现,极大地简化了数据库操作,使得...

    hibernate-jpa

    Hibernate与JPA的关系:** JPA 是一种规范,定义了如何在Java应用中管理和持久化数据。它为开发者提供了一套API,用于操作数据库,包括实体管理、查询语言和事务控制等。而Hibernate作为JPA的提供商之一,实现了...

    mysql的驱动包,适合使用hibernate和jpa

    MySQL驱动是Java应用程序连接到MySQL数据库的关键组件,特别是在使用Hibernate和JPA这样的对象关系映射(ORM)框架时。这两个框架极大地简化了数据库操作,但它们依赖于合适的数据库驱动来建立连接。本篇文章将深入...

    hibernate+jpa注解实现最简单的增删改查

    在Java开发中,Hibernate和JPA(Java Persistence API)是两种广泛使用的对象关系映射(ORM)框架,它们简化了与数据库交互的过程,使开发者可以使用面向对象的方式来操作数据。本教程将介绍如何使用Hibernate和JPA...

    Hibernate JPA

    Hibernate JPA作为一种成熟且广泛使用的ORM解决方案,不仅简化了Java应用程序中对象与关系型数据库之间的交互,还为开发者提供了强大的工具和灵活的配置选项。无论是初学者还是经验丰富的开发者,都能从中受益。了解...

    5.Hibernate 05 Hibernate结合JPA1

    JPA与Hibernate的关系** JPA是一个规范,而Hibernate是JPA的一个实现。这意味着你可以使用JPA的API来编写代码,而具体的数据访问逻辑则由Hibernate这样的提供商来处理。JPA提供了规范化的编程模型,包括注解和XML...

    支持hibernate+jpa开发的jar包

    在Java世界中,Hibernate和Java Persistence API (JPA) 是两个强大的框架,它们极大地简化了对象关系映射(ORM)的过程,使得开发者可以更高效地处理数据库操作。本资源包集合了这些技术所需的核心库,方便开发者的...

    spring+springmvc+hibernate+jpa搭建

    **Hibernate**:Hibernate是一个强大的ORM(对象关系映射)框架,它简化了Java应用与数据库之间的交互。通过Hibernate,开发者可以用Java对象来操作数据库,而无需编写SQL语句,从而减少了代码量和出错的可能性。 *...

    hibernate-jpa学习

    2. **Hibernate与JPA的关系**:Hibernate是JPA的一个实现,它提供了更强大的功能,如二级缓存、查询语言HQL等。Hibernate-JPA则是Hibernate提供的一个适配器,使得开发者能够使用JPA的API来操作Hibernate。 3. **...

    hibernate-jpa-2.0-api-1.0.1.Final-sources

    Hibernate JPA 2.0 API是Java持久化领域的重要组成部分,它为开发人员提供了一种规范化的接口,用于与关系数据库进行交互。这个源码包"hibernate-jpa-2.0-api-1.0.1.Final-sources"包含了完整的源代码,可以帮助我们...

    hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip

    JPA(Java Persistence API)是Java平台上的一个标准,用于处理Java对象与关系数据库之间的映射。它定义了一套规范,使得开发人员可以使用面向对象的方式进行持久化操作,而无需关心底层的SQL语法。JPA 2.1版本引入...

    Hibernate JPA jar包

    Hibernate JPA与MySQL数据库的结合,需要配置合适的JDBC驱动和数据库连接参数。通过设置`hibernate.dialect`属性为`org.hibernate.dialect.MySQLDialect`,可以确保Hibernate能够正确地生成针对MySQL的SQL语句。 **...

    hibernate-jpa-2.1-api 1.0.0.Final API

    Hibernate是Java领域中最受欢迎的对象关系映射(ORM)框架之一,而JPA则是Java平台上的标准 ORM 规范,允许开发者以面向对象的方式处理数据库操作。"API"代表应用程序编程接口,通常是一系列预定义的函数、类和接口...

    hibernate jpa 入门案例依赖jar

    在Java世界中,Hibernate和Java Persistence API (JPA) 是两个强大的对象关系映射(ORM)框架,它们简化了数据库操作,使得开发者可以使用面向对象的方式处理数据。本篇文章将深入探讨Hibernate JPA入门案例所需的...

    hibernate-jpa-2.1-api-1.0.0.Final.jar

    《深入理解Hibernate-JPA 2.1 API:源码解析与应用实践》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而Hibernate对Java Persistence API (JPA) 的支持,使得开发者...

Global site tag (gtag.js) - Google Analytics