当前位置: 网学 > 编程文档 > JAVA > 正文

选用Ibatis和Hibernate的区别

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/08/04
功能.  sqlmapclient对象是ibatis持久层操作的基础,相当于hibernate中的session,提供对sql映射的方法.  insert()方法实现对插入sql语句的映射;  delete()方法实现对删除sql语句的映射;  update()方法实现对更新sql语句的影射;  queryforlist()、queryformap()、queryforobject()、 queryforpaginatedlist()等方法提供了一组查询sql语句的影射;  二、使用步骤  1.ibatis sql map 配置文件  文件中对所用数据库的连接做了基本配置,包括数据库驱动类型、用户名、密码,以及连接池的相关管理数据.  2.po和映射文件  和hibernate一样,po作为数据库关系表的影射,也需要响应的映射配置文件,可以手写,也可以借助hibernate的相关工具生成po,不会影响po在ibatis中的使用.与hibernate不同的是,ibatis的映射文件中没有对po中每个属性做响应的描述,而是指定了一系列与po有关的sql相关操作,也体现了ibatis良好的灵活性与可扩展性.  3.编写dao  在dao中,可以使用sqlmapclient提供的方法来对应的指定对po操作的sql语句,从而使业务逻辑层的开发仍然是面向对象的操作.  选择hibernate还是ibatis都有它的道理:  特点对比  hibernate的特点:  hibernate功能强大,数据库无关性好,o/r映射能力强,如果你对hibernate相当精通,而且对hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽.以数据库字段一一对应映射得到的po和hibernte这种对象化映射得到的po是截然不同的,本质区别在于这种po是扁平化的,不像hibernate映射的po是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路. hibernate对数据库结构提供了较为完整的封装,hibernate的o/r mapping实现了pojo 和数据库表之间的映射,以及sql 的自动生成和执行.程序员往往只需定义好了pojo 到数据库表的映射关系,即可通过hibernate 提供的方法完成持久层操作.程序员甚至不需要对sql 的熟练掌握, hibernate/ojb 会根据制定的存储逻辑,自动生成对应的sql 并调用jdbc 接口加以执行.hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计o/r映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好hibernate方面需要你的经验和能力都很强才行,但是hibernate现在已经是主流o/r mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于ibatis.  ibatis的特点:  ibatis入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的sql使用经验,对于没有那么高的对象模型要求的项目来说,相当完美.ibatis的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改.当系统属于二次开发,无法对数据库结构做到控制和修改,那ibatis的灵活性将比 hibernate更适合.系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的sql语句(或存储过程)才能达到系统性能设计指标.在这种情况下ibatis会有更好的可控性和表现.  对于实际的开发进行的比较:  1. ibatis需要手写sql语句,也可以生成一部分,hibernate则基本上可以自动生成,偶尔会写一些hql.同样的需求,ibatis的工作量比 hibernate要大很多.类似的,如果涉及到数据库字段的修改,hibernate修改的地方很少,而ibatis要把那些sql mapping的地方一一修改.  2. ibatis 可以进行细粒度的优化  比如说我有一个表,这个表有几个或者几十个字段,我需要更新其中的一个字段,ibatis 很简单,执行一个sql update table_a set column_1=#column_1# where id=#id# 但是用 hibernate 的话就比较麻烦了,缺省

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号