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

使用的是ORM还是纯SQL?

宗政欣可
2023-03-14
问题内容

对于我开发的某些应用程序(后来逐渐忘记了),我一直在编写纯SQL,主要是针对MySQL。尽管我在SQLAlchemy之类的python中使用过ORM,但是我并没有坚持很长时间。通常,这是文档或复杂性(从我的角度来看)使我退缩。

我这样看:如果要使用一种类型的数据库,则使用ORM进行可移植性,使用普通SQL。我真的在寻求有关在开发需要数据库支持的应用程序时何时使用ORM或SQL的建议。

考虑一下,与使用ORM相比,仅使用轻量级包装器来处理数据库不一致会更好。


问题答案:

ORM具有一些不错的功能。他们可以处理将数据库列复制到对象字段的繁琐工作。他们通常负责将语言的日期和时间类型转换为适当的数据库类型。它们通常还可以通过实例化嵌套对象来相当优雅地处理一对多关系。我发现如果您在设计数据库时考虑到了ORM的优点和缺点,那么在将数据移入或移出数据库时可以节省很多工作。(如果需要映射它们,您将想知道它如何处理多态性和多对多关系。正是这两个域提供了大多数“阻抗不匹配”,这使得有些人将ORM称为“计算机科学的越南”。

对于事务性应用程序,即您发出请求,获取一些对象,遍历它们以获取一些数据并将其呈现在Web页面上,性能负担很小,并且在许多情况下,ORM可以更快,因为它将缓存对象。如前所述,否则将多次查询数据库。

对于报表繁重的应用程序,或每个请求要处理大量数据库行的应用程序,ORM负担要重得多,并且它们所做的缓存会变成很大的无用的内存消耗负担。在这种情况下,精简DAL中的简单SQL映射(LinQ或iBatis)或手工编码的SQL查询就是解决之道。

对于任何大型应用程序,我都发现您会同时使用这两种方法。(ORM用于简单的CRUD,而SQL / thin DAL用于报告)。



 类似资料:
  • 问题内容: 内置函数在我看来更像Pythonic,但我发现使用起来更频繁。 Python文档指出它们是等效的。 一位博客作者声称这比。 我应该使用哪个? 问题答案: 我会用。 来自:https : //wiki.python.org/moin/DubiousPython#Premature_Optimization 尽管正确应用优化确实可以加快代码的速度,但很少使用[..]的优化代码会使代码更难阅

  • 问题内容: 首先,我将解释如何理解和使用: 是为了批量加载对象的关系,从而减少对数据库的SQL请求。这对 LAZY 关系特别有用。 但是,它在 LAZY 关系上甚至还很有用:如果从数据库中加载实体列表并要求加载懒惰的实体,即使我只是使用测试来加载第一个实体的关系,它也会按批加载实体名单。 请注意是否有人要测试:仅显示是否尚未加载实体:例如,如果您有一个具有经理的用户列表并列出了所有用户,则当您访问

  • 我有一个重要的问题。 我以前使用过JSF1.2。我会使用一些基本的标签,比如 还有像这样的脸 为了使用ajax功能,我与 例如我使用了q jetty Web服务器来使用JSF标记。今天,我在JSF2.0、PrimeFaces和glassfish应用服务器上工作了一周。 所以我有以下问题:我是与JSF合作过,还是与Mojarra合作过?抱歉,但我并不清楚这两种技术之间的确切区别。 多谢了,麦克

  • 编译以下代码时: 我得到警告提示: 在I之后,程序中断似乎没有改变。 以下是输出: 问题2:进程在启动时是否在堆上分配内存以供将来使用?还是编译器更改了分配的时间点?否则,为什么? 可以设置参数来控制的行为,并且有一个名为的参数,一般情况下: 如果请求的内存小于它,则将使用; 如果请求的内存大于或等于它,则将使用; 该参数的默认值是(在我的系统上),但在我的测试程序中我使用了1MB,所以选择了,当

  • 主要内容:ORM 的缺点,ORM 框架,总结ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,它解决了对象和关系型数据库之间的数据交互问题。 使用面向对象编程时,数据很多时候都存储在对象里面,具体来说是存储在对象的各个属性(也称成员变量)中。例如有一个 User 类,它的 id、username、password、email 属性都可以用来记录用户信息。当我们需要把对象中的数据存储到数据库时,按照

  • 本文向大家介绍如何选择是使用webpack还是rollup?相关面试题,主要包含被问及如何选择是使用webpack还是rollup?时的应答技巧和注意事项,需要的朋友参考一下 如何选择是使用webpack还是rollup? #2073 #2082