![]() |
1
10
您可能想看看前面讨论ORM好处的问题: What are the advantages of using an ORM? 最相关的部分(取自接受的答案):
如果您经常接触ORM并编写自己的SQL,那么ORM最终可能会妨碍您的工作。 |
![]() |
2
5
因为我不允许评论你的帖子,所以我这样评论(缺乏观点)。 有助于讨论你为什么不喜欢ORM。 我想我会的。如果您出于某种原因发现ORM的查询速度很慢,那么我会自己进行查询。仅仅因为你使用了ORM,你的大部分任务并不意味着你必须为所有人使用它。但是的,这是最好的选择。 |
![]() |
3
5
我个人认为他们(嗯,冬眠)是一个令人难以置信的时间下沉。我不但没有节省时间,还花了太多时间试图弄清楚它到底在做什么。正如其他人所提到的,如果您的数据模型超出了一定的复杂性,那么在您和数据库之间有另一个层只会产生更多的摩擦。如果您的数据模型不那么复杂,那么无论如何您也不需要ORM。 我 做 建议使用某种抽象来防止SQL退出Java代码,但可以简单地用DAO层和属性文件或其他方法来完成。此外,像ibatis或spring jdbc这样的工具也很有用,因为您仍然可以编写自己的查询,并且只需使用框架来帮助处理jdbc和模型对象之间的数据洗牌的所有样板代码。 附言:有趣的旁注。在我的办公室里,我们实际上有一张加文·金的镶框照片,我们都是假扮成诅咒的。”嘿,这是 你的 转向处理今天的休眠问题,这里是gavin。“:-) |
![]() |
4
3
ORM的另一个优点是它在你的简历上看起来很好。当今大多数广告(至少是Java DEVS)需要对ORMS的一些知识。所以如果你有机会做一个项目,我会选择春天和冬眠,因为它会真正提高你的简历。 我认为到另一个问题的链接相当好地涵盖了技术优势,所以我不会说任何关于它们的内容。 |
![]() |
5
3
我个人更喜欢尽可能接近SQL,所以我会使用iBatis、Jooq或MentaBean。 MentaBean 顺便说一句,它提供了一种尽可能接近SQL的方法,同时也为样板JDBC代码提供了很多帮助。 |
![]() |
6
2
ORM有意将您的工作对象与数据库分离,从而创建一个抽象(不可避免地会出现泄漏)。所以你只需要挖回隧道来恢复你故意消除的东西。 如果许多应用程序是在数据库中有意实现的,那么ORM只会向信号添加噪声,并衰减信号。 |
![]() |
7
1
这取决于… 而且您不必为每个数据库访问使用ORM… |
![]() |
8
1
对。ORM可以减轻应用程序开发人员的负担;至少,在设计时考虑到它们不应该给设计增加太多负担,如果您决定使用ORM的话,在将来会有很大的帮助。 |
![]() |
9
1
像其他人提到的那样;如果您严重依赖于(关系)数据库,那么ORM会提供Litle,只是添加了一些不太有用的抽象。 但最重要的是:您(想)是否将数据作为对象来处理?如果是,ORM就是为此设计的。如果没有,何必麻烦。 如果需要的话,您可以在以后添加ORM——可能比预先添加要花费更多的时间,但是反向添加(在休眠妨碍您的方式之后清除它……)会更糟。 但是,ORM之间也存在差异;例如,iBATIS可能比Hibernate更适合(对于这个特定主题还有其他问题)。 |
![]() |
10
1
ORM: 是的,对于任何企业级的软件来说,数据都是复杂的……多个级别、表格、层……但即使在这里,也建议将nhibernate和ef6以及数据库视图进行良好的混合。 不适用于任何特殊应用程序。比如测量和需要保存大量数据的地方,但是没有数据复杂性 使用ORM有多种可能性,所有这些都取决于您想要什么。 作为一个真正的ORM映射器,我强烈建议 NHiBiNATE 和 流利NH 映射。你需要大量的研究来构建一个好的体系结构,但是没有什么能阻挡你。以最小的妥协,你得到真正的灵活性。 EF6X (核心不是生产就绪的IMHO)被称为ORM,但它生成的更接近DAL。有件事是你不能有效地利用EF6。尽管如此,这是我最喜欢的一个阅读模型的工具,但我确实将它与nhibernate结合起来(nh用于ddd/write模型)。 现在到 性能 -它总是利弊并存。如果你深入了解ORM 建筑学 (见我的文章: avoid ORM bad habits )然后你会直观地找到让它更快的方法。这是我的另一篇关于如何制作EF6x 5x的文章 更快 (至少对于读取情况): EF6.x 5x faster |
![]() |
11
1
或者,对于特定于数据库的SQL,映射确实是一个问题。但是,或映射的一些概念非常强大,可以更容易地与数据库交互。许多或映射器所共有的一些概念是:
对于你的任务来说,一个好的工具可能是 https://www.jooq.org ,允许您创建所需的任何SQL(包括嵌套选择、联合、复杂联接、别名、存储过程、UDT等)。 免责声明:我为供应商工作 |
![]() |
Montaser Majid · 用于从多行中提取单行的SQL查询 3 年前 |
![]() |
Chance · 根据Sequelize中的字段拉入特定记录/行 3 年前 |
![]() |
lambchop01 · GORM如何为相似实体之间的关系建模 3 年前 |
![]() |
Shale · 如何将此查询更改为ORM? 3 年前 |
![]() |
Daniel Morales · 替换mongo DB中的嵌入字段 3 年前 |
![]() |
Vinay P · NodeJS和ORM? 7 年前 |
![]() |
MadDoctor5813 · 在Django模型中创建“简单”字典? 7 年前 |