当前位置: 首页 > 面试题库 >

JPA实现-最佳使用哪个?[关闭]

颛孙和悌
2023-03-14
问题内容

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。

7年前关闭。

我利用了以下JPA实现:

  1. hibernate
  2. 顶联
  3. OpenJPA

他们每个人都有自己的优点和缺点。我发现Hibernate是这三个中最先进的,除了它将自己的某些增强功能与JPA混合在一起之外,这使得切换到其他提供程序变得很困难。最重要的是,在解释JPA时,其查询解析器更为宽松。它们使获取支持hibernate的正确库变得有些困难,因为我发现它的任务是尝试获取所有依赖项的正确版本。

Toplink没问题,但由于Oracle希望您使用/购买而感到有些瘫痪。他们更先进的图书馆。尝试下载它也是一个任务,因为您需要通过运行jar文件进行安装。我发现它仅实现了基本的JPA规范。我使用它的原因是hibernate,它使用了许多其他开源项目中常用的库,这些库经常会遇到类库问题,尤其是在使用JBoss时

OpenJPA-
到目前为止,它是最好的文档,可以轻松下载和使用,但似乎有很多问题。也许只是我的代码,但是我发现了更高级的用法,例如与CascadeType.OneOneMany关系。所有设置似乎都行不通。诚然,可能是我的代码错了,我还没有时间测试一个干净的案例,但是类似这样的许多事件使我不敢使用它。我真的希望它会好起来。它的错误消息通常对帮助解决问题毫无用处。

人们还使用其他哪些图书馆?他们更喜欢哪些图书馆?为什么?


问题答案:

对于这些实现,我有相同的结论。

  1. OpenJPA曾经/似乎是越野车

  2. Hibernate有大量的库,并且似乎在 延迟加载所有内容方面遇到了麻烦。

  3. 我最终选择了Toplink。它不像Hibernate那样灵活,但是它可以工作,我不必安装 commons-logging

我接下来要尝试的是JPOX,它最近已重命名为datanucleus。



 类似资料:
  • 问题内容: 在循环中声明变量是好的还是在Java中动态声明最佳。在循环中声明时是否还涉及性能成本? 例如。 选项1:循环外 选项2:循环内 问题答案: Robert C. Martin 在CleanCode中建议Java编码人员声明变量,使其尽可能接近使用它们的位置。变量的作用域不应超出必需的范围。使变量的声明靠近使用它的位置有助于提供读者类型和初始化信息。不要对性能太在意,因为JVM非常擅长优化

  • 修改器和填充函数可以做的事,纯函数也可以做到。实际上有些所谓的函数式编程语言只支持纯函数。一些程序员认为,比起使用修改器来,使用纯函数开发程序更快且更不易出错。但是,有很多时候修改器是很方便的,也有很多情况下函数是程序效率是更低的。 总而言之,我推荐在能使用纯函数的时候尽量编写纯函数,在修改器有无法比拟的优势的情况下,再求助于修改器。此方法可称为函数式编程风格。

  • 问题内容: 该图非常大,但无向。边缘未加权。 在我的实现中,我必须找到最大度数的顶点,并在顶点和边上都删除。 链表?数组列表?地图? 哪种对我的实施更好? 问题答案: 我的建议是将顶点存储在优先级队列中。这样,您可以非常快速地访问最高度的顶点。至于如何实现顶点,我将每个相邻的顶点存储在某种形式的数据结构中,例如HashSet或TreeSet,以便能够有效地删除内容。我不会明确地表示边缘,这不是必需

  • 我也可以使用,但它有与@data相同的问题。 为了解决的问题,我可以为字段编写自己的私有setter来重写生成的setter。但也许有更好的办法?这种情况下的最佳实践是什么?

  • 问题内容: 我想将Java Persistence API(JPA)用于我的Web应用程序。 有流行的JPA实现,例如 Hibernate , Toplink 和 EclipseLink 。什么实现是一个很好的选择,为什么? 问题答案: 当 Java持久性API(API) 的开发,它成为流行的速度非常快。JPA描述了使用Java在应用程序中关系数据的管理。 JPA(Java持久性API)是持久性提

  • 我有一个相同错误的崩溃报告,就像这个问题中的一样:同一线程上的WebView方法错误 建议创建Runnable()。 我不明白为什么这能解决问题。该错误表示相同线程上的Webview方法,但答案建议在UI-Thread(主线程)上创建该方法。但是UI-Thread不是唯一的线程吗?有人能详细解释整个过程吗(考虑到我在构造函数的每个活动中创建了一个新的Webview)? 实现Javascript函数