可能重复:
Are there good reasons not to use an ORM?
Why should you use an ORM?
您好, 我在SQL开发多年(许多不同的SQL服务器,如Oracle,MSSql,Mysql),我一直很高兴这样做。我最近看到很多关于ORM的东西,我问我为什么要走向这个世界。 你能不能花时间学习一种不同的方式来做我今天已经做过的事情,能给我一些好处吗? 提前致谢 角
答案 0 :(得分:5)
如果这些年来你写这样的东西:
string query = "SELECT * FROM myUsers WHERE Name = '" + aName + "'";
ResultSet result = sql.Execute(query);
UserList users = TransformResultSetToUsers();
那么你是时候找到一个合适的ORM(并且非常害怕SQL注入攻击)。
ORM为您做的是隐藏方法,安全性,性能,缓存,映射等,否则将花费大量时间来编程自己。怎么样这样做:
User currentUser = DaoUsers.GetUserByName(aName);
currentUser.Name = "new name";
DaoUsers.UpdateUser(currentUser);
涵盖所有查询,更新等。如果您在家中使用MySQL进行测试,并且在使用SQL Server时,您需要做的就是更改连接字符串。哦,它提供了缓存(在像NHibernate和其他人的情况下),这使得这种闪电很快,如果不需要,甚至不会触及数据库。
使用ORM的All-in-all: 意味着更容易。不用担心了。没有更多错别字。让ORM引擎处理所有事情。从对象设计数据库,而不是从“CREATE TABLE”语句设计数据库。专注于编程逻辑,而不是担心SQL的多样性。
最重要的是:类型安全如果您使用带有类型安全OO语言的ORM,这将使编译器在您开始调试它们之前捕获您的错误。
答案 1 :(得分:4)
我可以看到,从做一些数据库项目(没有ORM)的优点是:
执行CRUD(创建,读取,更新,删除)的大量代码可以通过编写纯XML文件或实例化几个对象来简单地想象出来。这可以给你一个巨大的开端。
您可以在单个位置定义架构,即XML文件或几个对象。这太棒了,因为它实现了DRY原则!
一个漂亮,干净的对象抽象被赋予你的面向对象的应用程序来访问数据,而不是你自己创建的一些hackish对象(取决于你的编程技巧)。
缺点:
ORM的抽象可能会泄漏,并且当你不能正常工作时,试图找出它在后端所做的魔法会给你带来麻烦。
ORM不适用于多种语言,或者处于alpha阶段(C ++,我正在看着你!)。
注意:我必须承认我还没有使用ORM,但我打算在下一个项目中使用一个ORM。