应使用哪个提供程序来实现 Java Persistence API (JPA) [关闭]

2023-12-30

我想为我的 Web 应用程序使用 Java Persistence API (JPA)。

有流行的 JPA 实现,例如休眠, Toplink and EclipseLink。 什么样的实施是一个好的选择,为什么?


当。。。的时候Java 持久性 API (API)被开发出来后,很快就流行起来了。 JPA 描述了使用 Java 的应用程序中关系数据的管理。

JPA(Java Persistence API)是持久性提供者实现的接口。

Hibernate 就是这样一种 JPA 实现。当您将 Hibernate 与 JPA 结合使用时,您实际上正在使用 Hibernate JPA 实现。

JPA 通常通过 Java 类中的注释来定义元数据。或者通过 XML 或两者的组合。 XML 配置会覆盖注释。

JPA 实现:

  • 休眠:最先进、应用最广泛。请注意 classpath,因为使用了很多库,尤其是使用时 杰老板。支持 JPA 2.1。
  • Toplink:仅支持基本的 JPA 规范。 (这是oracle的免费 JPA 实现的版本)
  • EclipseLink:基于 TopLink,是预期的前进方向 用于 Oracle 和 TopLink 的持久性。支持JPA 2.1
  • Apache OpenJPA:最好的文档,但似乎有很多错误。开源 JPA 的实施。支持JPA 2.0
  • 数据核心:文档齐全,开源(Apache 2 许可证),也是一个 JDO 提供者。支持JPA 2.1
  • ObjectDB: 有据可查
  • 中国移动通信JPA:适用于 Java 和 Android 的轻量级 JPA 2.1 实现。

其他方法有:

  • 普通 JDBC
  • ORM with Hibernate:Hibernate 现在也非常支持 JPA
  • iBatis:项目迁移到MyBatis(link http://mybatis.org)
  • JDO

选择 Hibernate 作为我的 JPA 的动机:

  • Mature project:
    • 最先进
    • 有据可查
  • Useful Hibernate sub projects
    • Hibernate工具:自动生成代码和数据库生成
    • Hibernate 验证:bean 规范功能。与 JPA2 集成
    • Hibernate 搜索:对域对象进行强大的全文搜索
  • Active community
    • 大开发社区
    • 广泛使用

在最终规范发布后,Hibernate 很快成为 JPA 的开源实现。它具有丰富的功能集,并且可以快速生成新功能,因为开源开发过程往往比 Java 社区过程更快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应使用哪个提供程序来实现 Java Persistence API (JPA) [关闭] 的相关文章

  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 如何在ArrayList中的特定位置插入对象

    假设我有一个大小为 n 的对象的 ArrayList 现在我想在特定位置插入另一个对象 假设在索引位置 k 大于 0 且小于 n 并且我希望索引位置 k 处及其之后的其他对象向前移动一个索引位置 那么有没有什么方法可以直接在Java中做到这
  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • 类型已知,但方法指的是缺失类型

    我对 java 和 Eclipse 不太有经验 但遇到以下问题 我正在写类似的东西 Point3D myPoint myClass myMethod arg 我收到错误 方法 myMethod myType arg 引用缺失的类型 Poin
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • 垂直 ViewPager 中的动画

    我需要垂直制作这个动画ViewPager https www youtube com watch v wuE 4jjnp3g https www youtube com watch v wuE 4jjnp3g 这是我到目前为止所尝试的 vi
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 但是创建静态实用方法不应该被过度使用吗?如何避免呢? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 随着时间的推移 java项目中引入了许多实用方法来完成更复杂和简单的任务 当使用静态方法时 我们在代码中引入了紧密耦合 这使得我们的代
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • 从 CLI 部署 Maven 项目?

    在 IDE 中构建并运行良好 cd home thufir NetBeansProjects HelloMaven JAVA HOME usr lib jvm java 8 openjdk amd64 home thufir local s
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www
  • 如何在 spring-data 中强制使用 CrudRepository 进行预加载?

    我有一个实体 其中包含List就是这样lazy默认加载 interface MyEntityRepository extends CrudRepository
  • Proguard 正在破坏我的清洁度。 Gson 和泛型

    我有一个从持久性加载信息的函数 我只是以一种非常简单的方式告诉它的类型 该类称为SharedPreferencesHelper kt所以它是一个真正的生活问题解决者 fun
  • java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

    文件夹结构 app main java jni Android mk Application mk hello jni c res 在构建 gradle apply plugin com android application androi
  • 检查按钮是否可用?如果没有,请等待 5 秒钟,然后再次检查?

    基本上我想看看此刻是否可以单击按钮 如果没有我想再试一次 所以我需要某种 goto 函数来返回到代码的前一行 尽管我怀疑我写得非常糟糕 但它本来可以做得更容易 try driver findElement By xpath button i
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma

随机推荐

  • JPA - 定义@Entity对象的多个jar

    我们正在以非常模块化的方式使用 Spring Hibernate 和 Maven 开发 Web 应用程序 有定义数据访问和查看特定内容的核心项目 然后有定义逻辑和实体的模块 Entity 然后是定义控制器和视图的 Web 应用程序 现在我们
  • 使用 r 中的 if 语句填充列

    我有一个非常简单的问题 目前正在努力解决 如果我有一个示例数据框 a lt c 1 5 b lt c 1 3 5 9 11 df1 lt data frame a b 如何创建一个新列 c 然后使用 b 列上的 if 语句填充该列 例如 c
  • 多个模态视图控制器在旋转后将基本模态更改为全屏

    这个问题困扰了我很长一段时间 我对此做了很多研究 但找不到答案 我第一次在这里发帖 如有错误请指正 原谅 环境 iPad iOS 6 0 问题 旋转后基本模式视图更改为全屏 描述 我当前正在运行一个全屏应用程序 显示模式视图控制器 从显示的
  • 无法按日期/时间在 Waterline 中查找记录

    如何比较 sails js 模型中的日期时间 这就是我所做的 但没有运气 var date moment format YYYY MM DDTHH mm ss SSS Z Game find where active true start
  • 重写 jQuery .val() 函数?

    有没有办法轻松覆盖 jQueryval 功能 我想覆盖它的原因是我想在每次为元素设置值时添加一些处理 我不想制作另一个自定义值设置器 例如myVal 您可以存储对原始内容的引用val函数 然后覆盖它并进行处理 然后使用call 使用正确的上
  • 如何在 Google Cloud 功能内使用 Google Sheets API

    我正在尝试 Google 的云功能服务 我想阅读和编写 Google 电子表格 但似乎找不到任何示例或方法来执行此操作 我的问题源于 Google 云函数的示例 javascript 是 exports helloWorld functio
  • 二进制序列化和 XML 序列化之间有性能差异吗?

    就解析 序列化 反序列化 和通过网络发送数据包而言 是否有任何好的估计二进制和 xml 序列化之间的性能差异 Nope 这在很大程度上取决于 XML 文档本身内部的数据类型 如果您有大量结构化数据 XML 的开销将会很大 例如 如果您的数据
  • JSLint 抱怨重新定义 undefined

    undefined https developer mozilla org en JavaScript Reference Global Objects undefined从技术上讲可以重新定义 因此它不是保留字 因此 我通常在匿名函数中编
  • Linq-To-SQL 多次访问数据库

    我试图通过在一次数据库访问中包含子属性来提高 Linq to SQL 查询的效率 我首先尝试各种 linq 查询来完成此任务 查询变得越来越复杂 所以我尝试了 LoadWith 选项 我的 DAL 类的构造函数设置 LoadWith 设置
  • BIGQUERY 中迄今为止的 STRING

    我正在努力尝试使用 Google BigQuery 来做到这一点 我有一列包含以下 STRING 格式的日期 6 9 2017 M D YYYY 我想知道如何处理这个问题 尝试使用DATE子句以获得以下格式 YYYY MM DD 很简单 使
  • 如何在 Visual Studio 2015 项目中使用 Qt?

    我们有一个使用 NET Framework 来显示表单 窗口的大型项目 最近我决定弃用 CLR 依赖并转 向 Qt 在学习Qt时 我们已经从Visual studio 2013迁移到2015 然后我注意到vs2015使用的MSVC 14版本
  • 重新打开 AVCaptureSession

    我有一个可以拍摄一些照片的应用程序 我的整个应用程序基于AVCam http developer apple com library ios samplecode AVCam WWDC 2010 的示例代码 我已经搞砸了很多 但是 到目前为
  • Django:使用 order_by 对数值进行排序

    我面临的情况是 我必须通过用于存储街道地址的 CharField 输出相当大的对象列表 我的问题是 显然数据是按 ASCII 代码排序的 因为它是 Charfield 具有可预测的结果 它像这样对数字进行排序 1 10 11 12 13 1
  • C++:重写公共\私有继承

    If B继承自A using public can B覆盖其中一个函数并强制其为私有 class A public virtual double my func1 int i virtual double my func2 int i cl
  • 是整数吗?值类型还是引用类型? [复制]

    这个问题在这里已经有答案了 这个问题更多的是关于添加一个 到一个值类型而不是大约int 在 C 中int是一个值类型 是int 值类型还是引用类型 在我看来它应该是一个参考类型 因为它可以null int 相当于Nullable
  • 自 iOS 10.3 起,discoverAllIdentities 和 discoveryUserIdentity 对于 CKUserIdentity.lookupInfo 返回 nil

    CKContainer discoverAllIdentities completionHandler discoveryUserIdentity recordID 完成处理程序返回 CKUserIdentity 但 lookupInfo
  • 使用 Python 在 Parquet 中嵌套数据

    我有一个文件 每行一个 JSON 这是一个示例 product id abcdef price 19 99 specs voltage 110v color white user Daniel Severo 我想创建一个包含以下列的镶木地板
  • Haskell:应用多态函数两次

    我们可以有一个多态函数f a gt b为不同的对实施a and b 我们怎样才能使 twice a gt b gt a gt c twice f x f f x 类型检查 即我怎样才能编写一个应用a的函数多态性功能两次 With Rank2
  • Android Studio 4.2.1 jarsigner 现在在哪里?

    我正在使用 Android Studio 的嵌入式 JDK C Program Files Android Android Studio jre 并且我正在使用jarsigner其中 jre bin jarsigner exe 按照描述签署
  • 应使用哪个提供程序来实现 Java Persistence API (JPA) [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想为我的 Web 应用程序使用 Java Persistence API JPA 有流行的 JPA 实现 例如休眠 Toplink and E