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

为什么使用JPA而不是直接在Java File上编写SQL查询(即直接写到JDBC)?

范浩宕
2023-03-14
问题内容

我一直在阅读几篇文章,介绍什么是什么JPA (Java Persistent API)以及支持它的供应商(DataNucleus,JBoss
Hibernate等)

我没有ORM(对象关系映射)的经验。

到目前为止,我所做的就是使用DTO和DAO编写自己的数据库类。到目前为止,我对我所拥有的感到满意,但是想知道
为什么人们使用JPA而不是包含SQL的Java文件

对我来说,我觉得编写DAO类可以像下面这样。

public class DAOUsers {
     public void insertNewUser(DTO DtoUser) {
           String query = "INSERT INTO users(username, address) " +
                          "VALUES(DtoUser.username , DtoUser.address)";
           Executor.run(query);
     }

}

我了解到JPA使用JPQL(Java持久查询语言),它针对实体对象而不是直接与db表一起运行。

我的理解(如果我错了,请纠正我)是这里的实体对象与我的DTO对象相同(有点像bean吗?)

但是无论如何.. JPA相对于在文件中编写纯SQL的真正好处是什么?似乎使用了JPA所需的注释并使SQL不可读对我来说真的没有吸引力。

如果您需要进一步说明,请告诉我。我是这个主题的新手,希望听听您的意见。


问题答案:

为什么使用JPA而不是直接在Java File上编写SQL查询(即直接写到JDBC)?

某些项目要求工程师将更多的精力放在对象模型上,而不是在用于访问数据存储的实际SQL查询上。这个问题实际上可以解释为

为什么要使用ORM框架?

在不同的情况下可以有不同的答案。

大多数项目都可以从拥有域模型中受益,而持久性则是第二个问题。使用JPA(实现)或大多数其他ORM框架,可以将所有实体(即数据库中的表)建模为Java中的类。此外,还可以将行为嵌入这些类中,从而获得行为丰富的域模型。此模型中的实体可以有多种用途,包括替换DTO以便跨层传输数据的目的。

就是说,在某些地方ORM框架可能无法直接解决该问题,特别是当数据模型已经建立时,或者当正在使用将数据库表映射到Java类的遗留系统时,这并非易事。而且在某些情况下,如果需要从ORM框架生成的SQL中完全消除问题,那么ORM框架通常是不合适的。



 类似资料:
  • 问题内容: 我对React.js还是很陌生,但是在探索它时,我期望我做不到的事情。 说我有一个组成部分: 这是将其添加到DOM的唯一方法吗? 我希望在定义组件之后能够直接在HTML中执行类似的操作: 我想念什么吗?谢谢 问题答案: 不,使用是“唯一的方法”。 您可能会期望像Webcomponents这样的东西,您可以在其中定义自定义元素并将其放入HTML中,但这不是React的工作方式(也许)。

  • 我正在为使用MongoDB和Mongoid的Rails应用程序编写迁移。我的迁移目前使用使用Mongoid查询和更新记录的模型,但性能低于标准。我基本上更新了一个大型集合中的所有记录,并进行了n 20次查询。在本地运行了一个小时后,我终止了迁移(但没有完成)。我希望能够不费吹灰之力地运行对mongo的原始查询。我假设有某种方法可以从Mongoid访问mongo驱动程序,因为Mongoid已经加载了

  • 我试图理解JTA,并将Bitronix用作首选的事务管理器(只是为了学习和理解)。我正在看《Bitronix参考指南》中的代码,我想知道:如果我使用的是JDBC,它本身就是事务性的(连接可以提交/回滚),为什么我要编写这样的代码?!?! 现在,这段代码的要点可能是简单地演示如何在现有事务性数据存储上使用Bitronix/JTA,但我仍然不知道它提供了什么固有的好处。 然后,这个代码片段让我思考:“

  • 我使用dropwizard制作了一个非常传统的文件上传方法。 所以我在资源中有一个这样的方法 里面没有什么特别的,它只是保存到一个路径,使用java.nio库,就像这样 它只是不会上传excel文件。我在其他地方读到excel文件和它们的底层类型受到怀疑。请问我需要做什么?

  • 问题内容: 我经常在 CAPITAL LETTERS中 看到用SQL编写的查询。虽然我认为SQL是不区分大小写的,为什么大多数都喜欢在写 大写字母 ?这只是选择问题还是有逻辑? 问题答案: 这是为了提高可读性。以前,SQL是用纯文本编辑器编写的(不突出语法/代码),并且需要区分关键字以提高可读性和维护性。 与 看到不同?每行的第一个单词都告诉读者确切的情况(从某处选择某物)。 但是现在,通过语法突

  • 本文向大家介绍静态HTML元素直接用SAPUI5编写,包括了静态HTML元素直接用SAPUI5编写的使用技巧和注意事项,需要的朋友参考一下 SAPUI5允许开发人员在某些区域使用UI5控件来使用自己的静态HTML元素。它不是封闭的框架,允许您使用sap.ui.core.HTML控件在UI5渲染的区域内编写任意数量的纯HTML,因此可以轻松混合HTML和UI5控件。 但是,由UI5控件创建的HTML