对于我开发的一些应用程序(然后继续忘记),我一直在编写纯SQL,主要用于MySQL.虽然我在SQLAlchemy中使用了python中的ORM ,但我并没有坚持使用它们.通常是文件或复杂性(从我的观点来看)阻碍了我.
我看是这样的:使用ORM来实现可移植性,如果它只是使用一种类型的数据库则使用普通SQL.在开发需要数据库支持的应用程序时,我真的在寻找何时使用ORM或SQL的建议.
考虑到这一点,使用轻量级包装来处理数据库不一致与使用ORM相比会好得多.
如果您要激发为什么要将ORM用于管理/客户的"优点",原因是什么?
尝试并保持每个答案的一个原因,以便我们可以看到被投票的最佳理由
在我的学徒期间,我已经将NHibernate用于一些较小的项目,我自己编写和设计.现在,在开始一个更大的项目之前,讨论产生了如何设计数据访问以及是否使用ORM层.由于我仍处于学徒阶段,并且仍然认为自己是企业编程的初学者,我并没有真正尝试推动我的观点,即使用对象关系映射器到数据库可以大大简化开发.开发团队中的其他程序员比我经验丰富,所以我想我会按照他们的说法去做.:-)
但是,我不完全理解不使用NHibernate或类似项目的两个主要原因:
所以,当然我可以用很多SELECTs等构建我的数据访问层,但是在这里我会错过自动连接,延迟加载代理类的优势以及如果表获得新列或列获得更低的维护工作量重命名.(更新众多SELECT,INSERT并且UPDATE查询与更新映射配置,并可能重构业务类和DTO的.)
此外,如果您不熟悉框架,使用NHibernate可能会遇到无法预料的问题.例如,这可能是信任Table.hbm.xml,您可以在其中设置字符串的长度以自动验证.但是,我也可以想象一下基于"简单"SqlConnection查询的数据访问层中的类似错误.
最后,上面提到的那些论点真的是不利用ORM用于基于数据库的非平凡企业应用程序的理由吗?他/我可能错过了其他可能的争论吗?
(我应该补充一点,我认为这就像第一个基于.NET/C#的"大型"应用程序需要团队合作.在Stack Overflow上被认为非常正常的良好实践,例如单元测试或持续集成,都是非 - 到现在为止.)
作为一个希望从手工编写的PHP站点迁移到基于框架的站点的Web开发人员,我已经看到很多关于一个ORM优于另一个ORM的讨论.它似乎对某些(?)大小的项目很有用,对企业级应用程序更为重要.
作为开发人员,它给了我什么?我的代码与我现在使用的各个SELECT语句有何不同?它如何帮助数据库访问和安全性?它如何找到有关数据库架构和用户凭据的信息?
编辑: @duffymo指出了对我来说应该是显而易见的:ORM仅对OOP代码有用.我的代码不是OO,所以我没有遇到ORM解决的问题.