ORM有什么好处?

时间:2010-02-09 10:51:41

标签: sql performance nhibernate orm subsonic

所以我有一个头撞墙的时刻,并希望有人可以帮助移除墙壁或阻止我的头移动!!

在过去的3/4周里,我一直在调查ORM为新项目做好准备。 ORM必须映射到现有的,大型且老化的SQL数据库。

所以我尝试了亚音速。我非常喜欢mod2之后的v2和v3与VB很好地协作,并且SQL中的命名模式运行正常。然而,由于缺乏具有单独的实体属性名称与列名称的灵活性,我把头发拉了出来(对不起Rob)。

我尝试了实体框架,但我发现其他地方缺少某些领域。

所以我咬了一下子弹并尝试了nHibernate但是经过一周左右的时间让它工作我喜欢(在Codesmith的帮助下为我生成类/ hbms)我对启动所需的时间感到沮丧(构建一个尽管尝试了一些技巧来减少这个时间,但仍然是配置对象)。

我基本上构建了一个可以在应用程序和网站之间共享的DAL类。我吠叫错了树吗?对于包含100个表的遗留项目,我应该回到ado.net并使用DTO吗? Aarrgh!

很抱歉这个问题很少见。我没有多少头发,我想保留我拥有的东西!!

提前致谢,Ed

PS。我应该补充一点,我非常了解SQL,并且不怕写脏快速查询。如果有什么我不需要隐藏SQL

4 个答案:

答案 0 :(得分:8)

ORM让你:

  1. 将表行映射到对象,这是面向对象编程的可行部分。
  2. 自动浏览对象关系
  3. 轻松添加,编辑和删除表格行
  4. 以更直观的方式查询数据库,因为您不必考虑连接(这将取决于ORM和查询方法)
  5. 透明地处理L1和L2缓存。
  6. 如果您不使用ORM,则必须手动处理上述所有内容。

    PS:我同意Dmitry关于NHibernate的启动时间(参见问题评论)。此外,你试过Fluent NHibernate吗?流畅的NHibernate令人印象深刻。我第一次映射数据库时无法相信自己的眼睛。它比DevExpress XPO等专有ORM更容易。

答案 1 :(得分:2)

ORM工具的最大好处是它可以帮助您正确分层应用程序。现在大多数项目使用数据层连接到数据库。您可以从ORM工具开始生成与数据库对象对应的类。然后使用这些方法定义接口。所有持久性代码都使用此接口的方法。这样,业务逻辑层只耦合到这个更高层的接口,并且不需要对数据库一无所知。实际上,应该不依赖于ADO.NET甚至NHibernate。

ORM工具的另一个优点是您可以将应用程序与数据库服务器分离。您可以更改数据库引擎并仍然使用相同的代码。此外,不仅ORM隐藏了SQL的复杂性。它还可以帮助您处理事务逻辑和连接池。

我会说,对于新项目,ORM工具是必需的。对于遗留项目来说,它并没有那么有用,除非你有时间/金钱从头开始。

答案 2 :(得分:1)

根据我的经验,大多数ORM最终会比SQL更复杂。这违背了使用它们的全部目的。

我热衷的一个解决方案是LINQ2SQL。它擅长作为存储过程或视图的薄层。它非常易于使用,并且不会试图隐藏SQL。

答案 3 :(得分:1)