ORM 通常不涉及执行诸如 select * 之类的操作吗?
如果我有一个表 MyThing,其中包含 A、B、C、D 等列,那么通常会有一个对象 MyThing,其属性为 A、B、C、D。
如果该对象没有被如下所示的 select 语句完全实例化,只获取 A、B,而不获取 C、D,那将是邪恶的:
select A, B from MyThing /* 不要获取 C 和 D,因为我们不需要它们 */
但总是这样做也是邪恶的:
select A, B, C, D /* 获取所有列,以便我们可以完整实例化 MyThing 对象 */
ORM 是否假设数据库访问速度如此之快,您现在不必担心它,因此您始终可以获取所有列?
或者,您是否有不同的 MyThing 对象,一个对应于 select 语句中可能出现的每一列组合?
编辑:在回答问题之前,请阅读 Nicholas Piasecki 和 Bill Karwin 的答案。我想我的问题问得不好,因为很多人都误解了,但尼古拉斯百分百理解。和他一样,我对其他答案感兴趣。
编辑#2:与此问题相关的链接:
为什么我们需要实体对象? https://stackoverflow.com/questions/18655/why-do-we-need-entity-objects
http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx,尤其是“部分对象问题和加载时间悖论”部分
http://groups.google.com/group/comp.object/browse_thread/thread/853fca22ded31c00/99f41d57f195f48b http://groups.google.com/group/comp.object/browse_thread/thread/853fca22ded31c00/99f41d57f195f48b?
http://www.martinfowler.com/bliki/AnemicDomainModel.html http://www.martinfowler.com/bliki/AnemicDomainModel.html
http://database-programmer.blogspot.com/2008/06/why-i-do-not-use-orm.html http://database-programmer.blogspot.com/2008/06/why-i-do-not-use-orm.html