不允许使用 Orm 工具:你在做啥? [关闭]
Posted
技术标签:
【中文标题】不允许使用 Orm 工具:你在做啥? [关闭]【英文标题】:Orm tool not allowed: What do you do? [closed]不允许使用 Orm 工具:你在做什么? [关闭] 【发布时间】:2010-10-11 14:13:36 【问题描述】:假设您在一家不允许使用任何类型的 ORM 工具的 IT 商店。他们不想买,你也不能使用开源解决方案。
你会怎么做?放弃真正的领域模型和以工作表为中心?制作自己的 DAL?
【问题讨论】:
我只是感兴趣 - 不允许使用 ORM 的原因是什么? 我过去也做过类似的规定,是的,ORM 有很多优点,但是像 ActiveRecord 模式这样的 ORM 可能是高效的,并导致资源滥用查询或完全丧失效率。 我猜他们不想使用不受支持的东西,但他们也不想花钱购买商业解决方案。 @David - 我承认有正当理由不使用 ORM,但是除非你有一个非常非常非常好的规则,否则设置一个坚定的“根本不允许 ORM”规则是一个坏主意原因。 Java Hibernate 将启动时间增加了 60 秒。每当我使用 ORM 时,即使“SQL 方式”会更容易,我也会花太多时间尝试“ORM 方式”做事情。我们需要更多信息。你的老板对 ORM 了解多少?你知道多少? 【参考方案1】:如果您决定构建我们自己的 DAL,Davy Brion 有一个非常好的教程。 看看Build Your Own Data Access Layer Series。
【讨论】:
【参考方案2】:我会推出自己的解决方案,可能会使用某种代码生成工具。从技术上讲,如果您将结果(无论是数据读取器、表格、记录集还是其他)转换为您的对象,您就有一个小的 o/r 映射器,虽然非常缺乏但仍然......我猜这是定义问题。
我的主要目标是避免在我的代码中重复 CRUD,这需要时间、无聊并且是缺陷的来源。
如上所述:如果不需要关系数据库,您总是可以使用一些对象数据库。但这些要少得多,如果你的老板反对 orm:s 他不太可能这样做。
【讨论】:
【参考方案3】:“没有任何类型的 ORM 工具。他们没有 想买一个,你也买不到 使用开源解决方案。”
没有任何类型的 ORM或只是开源/$$$?
优秀的 ORM 工具有免费版本:
Telerik Open Access Express:适用于 Express 数据库 网址:http://www.telerik.com/products/orm.aspx Lightspeed Express:仅限于八个模型类别 网址:http://www.mindscape.co.nz/products/LightSpeed/download.aspx【讨论】:
我不仅阅读了问题,还阅读了第一行。我觉得前两句话有些冲突。 “没有任何类型的 ORM”或只是没有“开源或购买”?也许他可以使用非开源但免费的 ORM。【参考方案4】:首先,你甚至不能使用开源软件,这绝对是迟钝的。
如果您必须自己动手,那也没什么大不了的。您仍然可以拥有域模型。如果您为每条记录建模,然后构建域模型以从中加载数据作为中间格式,您可能会更轻松。
【讨论】:
【参考方案5】:如果您确实无法使用现有的 ORM 之一,那么我不建议您创建自己的 ORM。本地开发的 ORM 往往是半实施、设计不佳、长满疣的野兽,在前六个月似乎有所帮助,然后逐渐成为项目中最耗时的问题。
如果您应用 Fowler 的企业应用程序架构模式中的“RowDataGateway”或“TableDataGateway”等模式,则可以不使用 ORM。
您最终仍会发展自己的隔离层以将您的域与数据库分开,但创建它不会像滚动您自己的 ORM 那样昂贵。
【讨论】:
【参考方案6】:看看他们对 iBatis (http://ibatis.apache.org/) 的看法,它不是 ORM,但可以帮助您从数据库查询中获取对象,而无需神秘的 ORM 魔法,尽管有很多 XML。
他们现在怎么样了?
【讨论】:
【参考方案7】:根据您的用户名,我会说“使用 LINQ”。它内置于 .NET 中,它不是 ORM(严格来说)。
【讨论】:
【参考方案8】:如果是因为公司太便宜而无法购买,那么请自己编写,并在项目结束时向他们展示您的时间成本。 (我认为他们原则上反对免费替代品)
如果是关于性能,你可能需要检查他们是否有道理。
如果他们担心这会增加其他开发人员必须学习的复杂性,那么请展示一些使用 ORM 简化的代码示例。
如果是因为应用程序已经非常“以表为中心”,那么您还必须考虑添加 ORM 是否会改善事情,或者只是增加很多不必要的映射复杂性。
(哦,请阅读:http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx)
【讨论】:
+1 表示越南计算机科学链接。【参考方案9】:这里有三种可能:
-
您的老板不了解使用 ORM 的好处。
您的老板正在按照他们一贯的方式做事,不会考虑改变。
您的老板有正当理由不选择 ORM。
不过,很可能是这三件事的结合。他们可能有一些可以通过更好地理解 ORM 来解决的问题。我的建议是尝试在 ORM 上销售它们。找到一段可以通过使用 ORM 来解决的特别讨厌的代码,并制作一个原型来展示该代码可以简化多少。另外,愿意妥协。
如果他们不愿意让步,您需要问问自己,这是否真的是您想要工作的地方。不是因为他们不允许你使用 ORM(你可能没有它),而是因为他们不会听你的。你不能总是随心所欲,但你应该对开发过程有意见。
【讨论】:
是的!有一份工作是为了生活,而不是为你的工作而生活。【参考方案10】:询问为什么不允许使用 ORM,什么是 ORM,然后从那里决定两种可能性中的一种:
-
成交
没有交易(退出)
【讨论】:
我觉得 2 如果说“No deal”会更有趣 我同意你的意见并修正了它。 就此放弃是不是有点幼稚?如果您是程序员,请创建自己的。 @MrChrister 这个问题似乎表明不允许使用 ORM ......那么编写自己的和使用开源解决方案有什么区别?此外,编写自己的 ORM 会增加错误的可能性,并会丢失更大的同行评审代码结构。 @David - 我们知道的一件事是该项目需要数据访问。当然会有bug,我也没说要发布给全世界。为这个项目工作,如果很难支持,那么代码不好。【参考方案11】:严格来说,您的选择是:
-
不要使用关系数据库
不要使用 OOP 语言
否则某种 ORM 解决方案是不可避免的(即使你自己推出,它仍然是一个简单的 ORM 层)。
【讨论】:
你说的太对了!!! ORM 中的 O 是 OOP 中的第一个 O。 ORM 中的 R 是 RDBMS 中的第一个 R。 M 是映射。【参考方案12】:制作您自己的 DAL,就像我们在很久以前,很久以前... 2004 年所做的那样。
【讨论】:
我不认为这是一个很好的论点。我猜你也提倡像我们在 2004 年那样使用 .Net 1.1? 这是常识;如果您不能使用现成的工具,请编写您自己的工具。良好的编程实践不应局限于您拥有的工具。工具可以节省时间和金钱,但如果你不能拥有它们,请不要做坏事或退出报复。 @Jason - 如果您被告知不能使用 .Net 2.0 及更高版本,是的,我希望如此。【参考方案13】:我会推出我自己的 DAL,使用类似于 Generic DAOs 的方式对其进行抽象,以使我的其余代码不紧密耦合,但我正在获取数据。
如果它们稍后出现,这使得将其全部交换到 ORM 变得很容易。
【讨论】:
【参考方案14】:选项:
-
自己动手
退出
在不告诉他们的情况下还是使用开源的,在原型运行良好时向他们展示原型,然后让他们重新考虑开源。
【讨论】:
#3 - 限制工具使用的人可能是因违反规则而解雇员工的人。 强调选项#2,除非他们有充分的理由不让你 #3,如果他们还没有解雇你,那就是#2 我一直在做#3。那些因为不理解工具而反对工具的人也不太可能试图理解你的代码。以上是关于不允许使用 Orm 工具:你在做啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Codesmith 是一个可行的 ORM 工具(还是我应该坚持使用真正的 ORM)[关闭]
与 .NET 2.0/3.5 一起使用的最佳免费 ORM 工具 [关闭]