ORM的一般局限性是什么?

ORM的一般局限性是什么?,orm,Orm,我知道有很多ORM迷,但是如何处理一个包含300多个表的数据库,其中一些表包含100多个字段 我看到的大多数示例应用程序只使用了几个字段。大规模使用ORM是否明智?我认为ORM是多余的(为什么在现实中数据库不容易更改的情况下创建另一层?) 对我来说,对于可能从数据库移动到数据库的小型应用程序,或者可以在多个平台上运行以使用ORM的应用程序,这是有意义的 否则它看起来没用或者只是另一个头痛 有什么想法吗?ORM的最大附加值是业务逻辑开发人员可以专注于与对象的交互,而不是数据库表 也就是说,有时您的

我知道有很多ORM迷,但是如何处理一个包含300多个表的数据库,其中一些表包含100多个字段

我看到的大多数示例应用程序只使用了几个字段。大规模使用ORM是否明智?我认为ORM是多余的(为什么在现实中数据库不容易更改的情况下创建另一层?)

对我来说,对于可能从数据库移动到数据库的小型应用程序,或者可以在多个平台上运行以使用ORM的应用程序,这是有意义的

否则它看起来没用或者只是另一个头痛


有什么想法吗?

ORM的最大附加值是业务逻辑开发人员可以专注于与对象的交互,而不是数据库表

也就是说,有时您的业务对象可能非常复杂,或者使用多个数据库表(即JPA2.0中的
@SecondaryTable
)。为了完成工作,您不需要知道实体在数据库中是如何表示的

关系呢?作为一名开发人员,我不需要知道该关系是否实现为联接表、外键或其他形式。我只需要设置适当的面向对象关联,ORM将为我完成其余的工作

我见过相当多的大型项目(>50名开发人员)在ORM上工作得很好,即使在那个时候,这些工具还不如现在那么好和成熟


您可能希望看到以下线索:

ORM的巨大附加值是业务逻辑开发人员可以专注于与对象的交互,而不是数据库表

也就是说,有时您的业务对象可能非常复杂,或者使用多个数据库表(即JPA2.0中的
@SecondaryTable
)。为了完成工作,您不需要知道实体在数据库中是如何表示的

关系呢?作为一名开发人员,我不需要知道该关系是否实现为联接表、外键或其他形式。我只需要设置适当的面向对象关联,ORM将为我完成其余的工作

我见过相当多的大型项目(>50名开发人员)在ORM上工作得很好,即使在那个时候,这些工具还不如现在那么好和成熟


您可能希望看到以下线程:

我在一些项目(Hibernate)中使用过ORM,而在其他项目中没有。ORM的限制与所有抽象一样,您放弃了一些灵活性,必须投资于学习实现的细节。但是,您通常可以提高编码效率,减少重复,集中配置,并获得特定于实现的其他改进。请注意,数据库的可移植性并非总是不费吹灰之力的—如果您使用特定于供应商的功能,显然不是这样

您没有提到您的项目是否已经有了数据访问实现。如果您是从零开始的,那么数据库的大小不应该让您太担心,因为ORM实际上应该在更大的数据库上为您节省更多的时间,以提高效率并减少重复。但是,如果您正在考虑替换现有的数据访问实现,并且您没有预见到数据库会有很大的变化,那么您的努力几乎肯定会超过其好处


顺便说一句,我怀疑示例应用程序使用小型数据库是因为它们创建起来比较省力,用户更容易理解示例,而不是因为开发人员认为他们的ORM解决方案只适用于小型数据库

我在一些项目(Hibernate)中使用过ORM,而在其他项目中没有。ORM的限制与所有抽象一样,您放弃了一些灵活性,必须投资于学习实现的细节。但是,您通常可以提高编码效率,减少重复,集中配置,并获得特定于实现的其他改进。请注意,数据库的可移植性并非总是不费吹灰之力的—如果您使用特定于供应商的功能,显然不是这样

您没有提到您的项目是否已经有了数据访问实现。如果您是从零开始的,那么数据库的大小不应该让您太担心,因为ORM实际上应该在更大的数据库上为您节省更多的时间,以提高效率并减少重复。但是,如果您正在考虑替换现有的数据访问实现,并且您没有预见到数据库会有很大的变化,那么您的努力几乎肯定会超过其好处

顺便说一句,我怀疑示例应用程序使用小型数据库是因为它们创建的工作量较小,用户更容易理解示例,而不是因为开发人员认为他们的ORM解决方案只适用于小型数据库