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

用于仅插入/仅查询应用程序的ORM框架

司空叶五
2023-03-14
问题内容

我已经使用Hibernate多年了,从来没有遇到过任何问题,但是刚刚意识到我的大部分工作都涉及CRUD方法,在这种方法中,我需要随意保存和修改数据。

问题是有些人想要制作2个单独的应用程序,一个要批量插入,另一个要对插入的数据执行搜索。

由于这种情况下的持久性有点用处,因此团队希望不使用Hibernate,而是在插入应用程序上使用原始查询,而在查询应用程序上使用jOOQ之类的东西。

那是正确的电话吗?还是我可以说服他们使用Hibernate,而不是“它是我最喜欢的orm框架”?还是甚至没有考虑其他解决方案?


问题答案:

免责声明:我是jOOQ的创建者,因此,这个答案有些偏颇。

jOOQ专为您的同事提到的用例而设计。在您的项目中,您不是在执行OLTP(CRUD),而是在执行OLAP,这在许多方面都是jOOQ的很好用例。jOOQ鼓励使用OLAP功能,例如窗口函数,数据透视表,递归查询,存储过程,数组和未嵌套的数组等。jOOQ还支持13种不同的数据库,这些数据库具有您要避免的所有SQL兼容性问题。一些例子:

  • LIMIT .. OFFSET/ TOP .. START AT,etc子句如何映射到数据库?
  • 如何绑定变量(带或不带强制转换)?
  • 如何支持内置功能?
  • 派生表是否需要用括号括起来?

不过,Hibernate也很好地涵盖了所有这些兼容性方面。因此,您的问题可以归结为:

  • 您是否想使用Hibernate,它不是理想的技术选择,但您知道它并因此可以估计风险?如果团队中的每个人都知道并喜欢Hibernate,并且没有时间学习新事物,这就是方法。

  • 还是您想使用其他更合适的框架,但您不太了解框架,因此无法估算所有风险?如果您是唯一一个支持Hibernate的人,并且有时间学习新框架,那么这可能是一条路。您可能要考虑的其他框架:

    • 带有JdbcTemplates的Spring可以与jOOQ结合使用
    • myBATIS,可以很好地处理SQL。
  • 或者,您可以混合使用各种技术,并使用Hibernate进行更简单的查询,而将普通SQL / jOOQ / Spring / myBATIS /等等用于更复杂的查询。

  • 还是可以使用存储过程(例如,如果使用Oracle,则在PL / SQL中)处理批量处理和OLAP查询,并让数据库完成工作?如果您的团队中有一名优秀的DBA或数据库专家,这可能是解决方法。

没有正确或错误的答案。但是您将必须做出务实的决定。



 类似资料:
  • 问题内容: 我们正在寻找构建正在创建的应用程序前端的选项,并正在尝试评估一种对我们有用的工具,并为我们提供前进的最佳平台。 这是一个Node.js项目。我们最初的计划是使用Express并沿这条路线走,但是我们决定在开始此阶段之前,最好回顾一下那里的内容。我们的应用程序有几个我们认为不适合单页模型的领域,因为它们是从应用程序的角度关联的,而不是从一个角度来看的。 我们已经看到了一些可用于构建客户端

  • 最近,我与一位经验丰富的建筑师进行了讨论。讨论围绕在Web场中运行的基于Web的多租户应用程序的理想架构和设计展开。该应用程序的唯一任务是允许用户上传“n个”Excel文件,系统正在处理这些文件以生成非常复杂的报告。处理这些文件需要很长时间(每个文件一个小时,让我们把它当作一个限制)。因此,用户在上传后会等待来自系统的通知来下载生成的报告。 乍一看,这个需求看起来很简单,但是期望是应用程序必须10

  • 如何执行一个完整的应用程序与根权限(不只是几个命令)? 我正在一个根深蒂固的Android设备上工作。 在android应用程序中,我需要播放通过接收的H.264流。我需要root权限才能打开(原始打开)。 相应的代码在JNI中。由于JNI代码和Java代码之间需要交换大量缓冲区,因此可执行方式()非常不方便。 JNI代码在与Java代码相同的进程上下文中执行。因此,向我的android进程授予r

  • 嗨,我必须为Android和iPhone开发一个应用程序。我知道为Android和iPhone开发的语言,但如果我只想为所有平台创建一个应用程序,我该如何使用?我必须创建一个简单的应用程序,其中包含一些来自服务器的新闻,这个应用程序可以从iTunes和PlayStore下载,但它是同一个应用程序。我知道有电话差距,但我不知道是否可以做到我想要的。我想用另一种方式使用jQuery Mobile,但当

  • 看来我有bug了。至少我认为这是一个错误。我编写了一种Soundboard并想添加与他人共享声音的功能。我要分享的代码如下: 我的问题是,这是可行的,但只适用于一些应用程序。例如,当我与WhatsApp或DropBox共享音频时,它似乎工作得很好,但当我尝试使用Google Drive或Bluetooth进行相同操作时,似乎出现了一些错误。请注意,音频的文件类型为WAV。我还确保我有权限写入外部存

  • 若要调试 Oracle 查询,请在工具栏点击 “调试”来启动 Oracle 调试器。 如果查询设有输入参数,请先输入参数。