ORM:我为什么要用它?

时间:2010-06-03 16:05:13

标签: sql entity-framework orm

  

可能重复:
  Are there good reasons not to use an ORM?
  Why should you use an ORM?

您好, 我在SQL开发多年(许多不同的SQL服务器,如Oracle,MSSql,Mysql),我一直很高兴这样做。我最近看到很多关于ORM的东西,我问我为什么要走向这个世界。 你能不能花时间学习一种不同的方式来做我今天已经做过的事情,能给我一些好处吗? 提前致谢 角

2 个答案:

答案 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)的优点是:

  1. 执行CRUD(创建,读取,更新,删除)的大量代码可以通过编写纯XML文件或实例化几个对象来简单地想象出来。这可以给你一个巨大的开端。

  2. 您可以在单个位置定义架构,即XML文件或几个对象。这太棒了,因为它实现了DRY原则!

  3. 一个漂亮,干净的对象抽象被赋予你的面向对象的应用程序来访问数据,而不是你自己创建的一些hackish对象(取决于你的编程技巧)。

  4. 缺点:

    1. ORM的抽象可能会泄漏,并且当你不能正常工作时,试图找出它在后端所做的魔法会给你带来麻烦。

    2. ORM不适用于多种语言,或者处于alpha阶段(C ++,我正在看着你!)。

    3. 注意:我必须承认我还没有使用ORM,但我打算在下一个项目中使用一个ORM。