最佳答案
在我的学徒期间,我使用 冬眠的一些较小的项目,我主要是自己编码和设计。现在,在开始一些更大的项目之前,讨论出现了如何设计数据访问以及是否使用 ORM 层。由于我还在学徒期,并且仍然认为自己是企业编程的初学者,我并没有真正试图推进我的观点,那就是使用数据库的对象关系映射器可以大大简化开发。开发团队中的其他程序员比我更有经验,所以我想我会按他们说的做。:-)
然而,我不完全理解不使用 NHibernate 或类似项目的两个主要原因:
所以,当然我可以用大量的 SELECT
等来构建我的数据访问层,但是在这里我错过了自动连接、延迟加载代理类的优点,以及如果一个表获得一个新列或者一个列被重命名时较低的维护工作量。(更新大量的 SELECT
、 INSERT
和 UPDATE
查询,而不是更新映射配置,可能还要重构业务类和 DTO。)
另外,如果你不太了解 NHibernate 框架,使用 NHibernate 可能会遇到不可预见的问题。例如,可以信任 Table.hbm.xml,在其中设置字符串的长度以自动验证。但是,我也可以想象基于“简单”SqlConnection 查询的数据访问层中存在类似的 bug。
最后,上面提到的那些论点真的是不将 ORM 用于基于重要数据库的企业应用程序的好理由吗?他们/我是否可能错过了其他争论?
(我可能应该补充一点,我认为这是第一个“大”。基于 NET/C # 的应用程序,需要团队合作。到目前为止,在 Stack Overflow 中被视为非常正常的良好实践(如单元测试或持续集成)都不存在。)