网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 新手入门 > 开发工具 > 现有一些ORM工具的弊端  

现有一些ORM工具的弊端

2004-03-29  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  作者:Aargan   
    
   现在流行很多ORM工具,其中HIBERNATE算做得很好的了,使用的人群也非常多,而且大做都在说好,为什么讷?使用简单,开发比较快速,但是问题也随之而来了....
  
  * 本文假设开发的都是和数据库相关的项目
  
  ORM能做什么?帮你用对象的方式来操作RDBMS,这是很多人渴望的,因为他不再需要关心底层数据库是怎么工作的了,甚至不需要知道数据库的结构,一切都交给ORM去管理了,看起来是非常好的,程序非常直观,写起来也容易,但是运行起来呢?
  
  事实上,开发者使用ORM工具时,最痛苦的也许就是DBA了,作为DBA,要保证整个系统的性能,必需对一些运行不好的SQL进行TUNING,做一些优化,调整其执行计划,是整个应用的性能及稳定性提高,但是当他们发现有SQL性能不好,需要找程序员协调修改时,得到的回答是:\"我们使用xxx (某ORM工具),SQL都是他生成出来的,我没办法调整\",ft,你不调整,难道我来啊?最终结果呢,程序跑不动,该改得还是得改,管你用什么xxx, 这时候也许就会觉得痛苦了吧?
  
  原来ORM并没那么好用?SURE,object的世界和relational的世界本来就不能很好的映射,就不要要求他那么完美了吧! 网管u家u.bitsCN.com
  
  那要么我就就用原始的SQL语句,在程序里直接用JDBC操作,这总不会有什么限制了吧,是的,你用SQL语句能做的东西你都能做,但是怎么做讷?
  
  Connection conn = null;
  Statement stmt = null;
  ResultSet rs = null;
  log.info(\"==SQL==:\" + sql);
  
  try {
  conn = getDataSource().getConnection();
  stmt = conn.createStatement();
  rs = stmt.executeQuery(sql);
  return readSingleObjectFromResultSet(rs);
  } finally {
  close(rs, stmt, conn);
  }
  
  ft,大哥,太麻烦了吧,每查这么一次就要写这么多东西啊,我真的只需要执行语句SQL语句而已啊,
  
  是的,你只需要执行易于SQL语句,但是你必需这么做
  
  不管怎么,麻烦是麻烦了,但总能工作了吧,返回结果呢?ResultSet,我不觉得他很合适,Connection一关了他就不能用了,要是不关讷,等我用完了再关,(不是吧,那是Connection讷,很金贵的,HINT:对于\"贵重\"的资源在真正需要时才使用,而且用完了马上释放掉,谁让他那么宝贵讷),于是,在读出数据之前,现把结果拿出来,关掉Connection,返回,这里可以做一些工作,让你的ResultSet里取得的数据返回得更漂亮一些,做一些映射,放到一些简单的bean里返回给上层使用

网管网www.bitscn.com


  
  相比之下,大多数人都选择ORM和JDBC结合使用的办法,简单的CRUD操作,就让ORM去做吧,简单,省心,开发效率高,的确是这样,其他的工作讷, 不要勉强你的ORM工具,也不要说他不够完美,事实就是这样,OBJECT 和 RELATIONAL本来就不是一样的东西,哪能那么完美的映射讷?
  
  那我们就这么用吧,但是问题又来了,你写在程序里的SQL,;尽管是少数,但这些都是比较复杂的了(不是么?),运行了一段时间,DBA又来找了:
  
  那个谁谁谁,你的这个SQL需要搞一下,要加个HINT,调整一下执行计划,否则数据库的COST太大了
  
  不是吧?又要改?(怎么说又?难道不是么,改的还少了?)
  
  于是就修改,编译,打包,测试,发布.........DBA又来了....(怕怕)
  
  于是就有了iBATIS,他是一个什么东西呢?基本上,他有两部分内容:SQL map 和 DAO.
  SQL map是核心的内容,负责将你某一次操作影射到一个SQL语句上去执行,当然,这个SQL语句是可以预见并且非常灵活且容易调整的,DAO是一个上层一点的封装,目的是为了让整个应用更加灵活,自由 网管bitscn_com
  
  使用iBATIS最大的诱惑就是,系统运行的所有SQL语句,你都可以在程序以外进行调整,功能上的可以开发者来做,性能上的么,把你的配置文件给DBA,他会给你做好的,很轻松,不是么?
  

TAGs弊端   工具   一些   现有   SQL   ORM   语句   需要   但是   调整    
 上一篇:JProfiler跟踪和检查系统性能的好工具   下一篇:Java从入门到精通之工具篇
相关文章列表
现有一些ORM工具的弊端 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Java从入门到精通之工具篇
2.花二十分钟教你Ruby快速入门
3.深入WebLogic Portal UI编程
4.开发技术:KETTLE JAVA API&nb
5.轻松搞定Java内存泄漏
6.Gel:号称世界上最轻巧的Java IDE
7.Java 工具完全安装手册
8.Junit 的使用经验总结
9.FCKeditor在线编辑器的使用
10.CheckStyle 及其配置的详细解释
最新推荐文章:
1.Eclipse开发经典教程:SWT布局
2.使用java开发facebook网站应用程序
3.使用JasperReport与iBATIS开发Web报表
4.基于web的java应用开发的备用工具
5.如何使用JMeter测试Java项目
6.JRuby 1.0发布:实现JVM对Ruby的兼容
7.认识p-unit:一款开源的性能测试工具
8.JavaFX应用程序制作工具JFXBuilder
9.Eclipse Template与模式
10.Java新手看招 常用开发工具介绍
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的