简单对象到数据库产品

Posted

技术标签:

【中文标题】简单对象到数据库产品【英文标题】:Simple Object to Database Product 【发布时间】:2010-09-06 22:12:05 【问题描述】:

我一直在研究一些不同的 .NET 产品,它们建议通过为业务对象提供一种无缝映射到自动生成的数据库的方法来加快开发时间。我在编写数据访问层时从来没有遇到过问题,但我想知道这种类型的产品是否真的能节省它声称的时间。我还担心我会放弃对数据库的过多控制,从而使追踪任何数据级问题变得更加困难。在数据库和业务对象结构必须改变的艰难情况下,这些类型的产品会变得更好还是更糟?

例如: Object Relation Mapping from Dev Express

本质上,值得吗?我会节省“那么多”时间、精力和未来的错误吗?

【问题讨论】:

【参考方案1】:

我使用过 SubSonic 和 EntitySpaces。一旦你掌握了它们的窍门,我相信它们可以节省你的时间,但是随着你的应用程序的复杂性和数据量的增长,你可能会超过这些工具。您开始浪费时间试图弄清楚性能问题是否与 ORM 或您的代码有关。所以,要回答你的问题,我认为这取决于。我倾向于同意 Eric 的观点,大容量企业应用程序不是通用 ORM 的好地方,但在标准票价的小型 CRUD 类型应用程序中,您可能会看到一些节省的时间。

【讨论】:

【参考方案2】:

我发现 Apache 小组的 iBatis 是解决此问题的绝佳方法。我的团队目前正在使用 iBatis 将我们所有的调用从 Java 映射到我们的 mysql 后端。这是一个巨大的好处,因为它很容易管理我们所有的 SQL 查询和过程,因为它们都位于 XML 文件中,而不是我们的代码中。将 SQL 与您的代码分开,无论是什么语言,都会有很大帮助。

此外,iBatis 允许您编写自己的数据映射器来将数据映射到对象和从对象到数据库。我们想要这种灵活性,而不是为您做所有事情的 Hibernate 类型解决方案,但也 (IMO) 限制了您执行复杂查询的能力。

还有一个 .NET 版本的 iBatis。

【讨论】:

【参考方案3】:

我最近从 Castle Project 为一个应用设置了 ActiveRecord。这很容易上手。在用它创建了一个新应用程序之后,我什至使用 MyGeneration 为 ActiveRecord 可以在很短的时间内使用的旧应用程序编写类文件。它使用 NHibernate 与数据库交互,但带走了 NHibernate 附带的所有 xml 映射。好消息是,如果有必要,您的项目中已经有 NHibernate,如果您有一些特殊情况,您可以使用它的全部功能。建议去看看。

【讨论】:

【参考方案4】:

ORM 有很多选择。 Linq 到 Sql,nHibernate。对于纯对象数据库,有 db4o。

这取决于应用程序,但对于大容量企业应用程序,我不会走这条路。您需要更好地控制您的数据。

【讨论】:

【参考方案5】:

我在周末与一位朋友讨论过这个问题,如果您需要能够在应用程序之外查询数据库,那么您在易于存储方面获得的收益似乎会丢失。我的理解是,这些数据库通过以非规范化方式存储您的对象数据来工作。这样可以快速检索整组对象,但如果您需要从与您的对象模型不匹配的角度选择数据,则 odbms 可能很难获取您想要的特定数据。

【讨论】:

以上是关于简单对象到数据库产品的主要内容,如果未能解决你的问题,请参考以下文章

Java 工厂方法模式的简单示例

java 工厂方法模式简单实例

对象关系映射(ORM)

设计模式之简单工厂模式

简单工厂模式

简单工厂模式