微信开放平台 网站开发临沂网站建设步骤
web/
2025/10/3 21:28:24/
文章来源:
微信开放平台 网站开发,临沂网站建设步骤,商城类网站怎么推广,怎么做淘宝网站赚钱技巧orm框架选型问题在过去的几年中#xff0c;像Hibernate这样的对象关系映射工具已经帮助开发人员在处理关系数据库方面获得了巨大的生产力增长。 ORM使开发人员可以专注于应用程序逻辑#xff0c;并避免为诸如插入或查询之类的简单任务编写大量样板SQL。 但是#xff0c;充分… orm框架选型问题 在过去的几年中像Hibernate这样的对象关系映射工具已经帮助开发人员在处理关系数据库方面获得了巨大的生产力增长。 ORM使开发人员可以专注于应用程序逻辑并避免为诸如插入或查询之类的简单任务编写大量样板SQL。 但是充分证明的对象关系阻抗不匹配问题不可避免地引起开发人员的头痛。 关系数据库是建立在合理概念基础上的一种专门技术但是它们不一定符合面向对象的世界。 有几种使用ORM的方法和样式它们各有利弊。 使用ORM的基本选择之一是确定是从数据库架构生成ORM映射还是从数据库架构生成ORM定义可能是XML配置文件注释或类似XDoclet之类的数据库架构 。 从数据库架构生成ORM层的前一种方法意味着无论是处理特定于数据库的DDL还是具有某些抽象层都必须使用其自己的语言和术语来处理数据库但是仍然不得不处理数据库本身。 不幸的是这意味着您需要技术方面的专业知识并且可能要花费比允许生成架构更多的工作。 但是这迫使开发人员正确理解和处理RDBMS –将DBMS视为简单数据存储区既危险又有害。 开发人员在设计应用程序时需要考虑键索引等的影响并将它们与关系数据库的现实掩盖起来可能很危险而根据我的经验这总是很糟糕的。 一个相关的问题是POJO的使用最终由ORM框架操纵。 从理论上讲这听起来不错但实际上您会遇到各种各样的问题并且很可能将应用程序逻辑与真正应该构成数据访问对象的逻辑混合在一起。 开发人员和架构师喜欢通过使用Spring和其他框架来赞扬关注点的分离并且没有真正的理由为什么不应在此处应用相同的概念。 另一个较小的问题是需要维护POJO和映射定义但这通常不是太多的工作。 从您的模式生成ORM映射和代码的第二种方法是我的首选方法。 根据我使用这两种方法的经验可以从模式中生成bean从而可以智能地设计bean并且仅根据需要使其变得复杂同时可以免费按PK按索引等进行获取。 由于它们都在持久性类本身中进行管理因此管理惰性集合和引用对象之类的事情也变得更加容易。 这种方法还避免了编写样板POJO的需要并迫使您将数据访问对象与域对象和业务逻辑分开对待。 根据我从架构生成数据访问bean的经验这些bean最终变得更丰富更可用性能更好并且一旦建立了基础架构维护成本就会降低。 有人可能会认为您最终需要其他数据包装器类但实际上对单独的Bean类的需求与数据访问层中发生的情况无关。 这里的一个问题是可以为您完成这一代工作的框架的可用性–过去我曾使用过定制的解决方案这些解决方案虽然效果很好并取得了回报但是需要初期的前期工作。 在较小的项目上可能没有足够的回报值得在这种工作上进行投资。 同时有一些采用这种方法并生成持久性实体类的ORM 例如jooq 但是我必须尝试一下。 Hibernate是Java领域中最流行的ORM尽管它与处理大量SQL无关但它存在一些问题。 通常该方法是定义映射和POJO然后让Hibernate管理SQL生成。 这样做的问题是您定义的架构通常不理想并且最终忽略了诸如正确索引之类的事情。 尽管您选择使用其专有内容的程度由您决定但Hibernate还会迫使您最终使用其事务和查询机制。 这不一定在所有情况下都是一件坏事但是我个人对经常使用的HQL语言感到不满意因为它为开发人员引入了一种熟悉的不同的语言其他人后来不得不维护并尝试弄清楚出来。 查询优化也可能出现问题并且过去在性能调优方面做了大量工作对我来说必须访问实际查询以进行调优。 我还认为尝试在持久性类中实现继承只是一个坏主意–试图将一个概念强加到自然无法容纳它的技术上是不值得的。 Hibernate诱使开发人员通过支持按层次结构表和按类的机制在数据库中实现继承但这在我心中是一个错误因为您最终会遇到不良的数据模型以及以后管理和扩展层次结构的问题。 我也不喜欢填充应该是干净的关系模型-您不能假装关系数据库是面向对象的数据存储。 如果您从这篇文章中删除了一件事那就应该是不要忽略您正在使用的实际技术。 对待RDBMS到底是什么然后学习使用它。 对面向对象的系统执行相同的操作。 无论如何请尝试通过使用ORM来避免编写样板代码和不必要SQL从而使您的生活更轻松但是不要认为您可以避免处理某种翻译或代码来应对自然发生的不匹配。 不要期望使用框架或工具来为您解决问题。 开发人员付钱去思考和辨别最好的道路因此我们不应该害怕在问题出现时以明智的方式处理它们。 与许多事物一样此处适用80-20规则。 使用ORM可以为您完成80的工作并准备为另外20的工作编写SQL和一些持久性代码。 不要期望太高否则您最终会遇到几种类型的问题-奇怪的错误性能问题设计不良的面向对象模型等。 我很想听听您对任何语言的ORM的经验和想法以及您所面临的问题以及如何处理它们。 这是经验非常宝贵的主题之一因此请分享您的想法。 参考 问题与奥姆斯我们JCG伙伴 ■在Carfey软件博客 。 相关文章 Hibernate陷阱 Hibernate自动提交命令强制MySQL在过多的磁盘I / O中运行 Hibernate映射集合性能问题 DataNucleus 3.0与Hibernate 3.5 Java Persistence API快速入门 翻译自: https://www.javacodegeeks.com/2011/09/problems-with-orms.htmlorm框架选型问题
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86425.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!