Mybatis与Hibernate的区别

	Mybatis技术特点:
	好处:
	1、  通过直接编写SQL语句,可以直接对SQL进行性能的优化;
	2、  学习门槛低,学习成本低。只要有SQL基础,就可以学习mybatis,而且很容易上手;
	3、  由于直接编写SQL语句,所以灵活多变,代码维护性更好。
	缺点:
	4、  不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好。
	a)         Mysql:limit
	b)        Oracle:rownum
	5、  需要编写结果映射。
	Hibernate技术特点:
	好处:
	1、  标准的orm框架,程序员不需要编写SQL语句。
	2、  具有良好的数据库无关性,即数据库发生变化的话,代码无需再次编写。
	a)         以后,mysql数据迁移到oracle,只需要改方言配置
	缺点:
	3、  学习门槛高,需要对数据关系模型有良好的基础,而且在设置OR映射的时候,需要考虑好性能和对象模型的权衡。
	4、  程序员不能自主的去进行SQL性能优化。
	 
	Mybatis应用场景:
	需求多变的互联网项目,例如电商项目。
	Hibernate应用场景:
	需求明确、业务固定的项目,例如OA项目、ERP项目等。


	开发速度:
	     hibernate开发中,sql语句已经被封装,直接可以使用,加快系统开发;
	            	Mybatis 属于半自动化,sql需要手工完成,稍微繁琐;
	sql优化方面:
	Hibernate 自动生成sql,有些语句较为繁琐,会多消耗一些性能;
	Mybatis 手动编写sql,可以避免不需要的查询,提高系统性能;
	对象管理比对:
	        	Hibernate 是完整的对象-关系映射的框架,开发工程中,无需过多关注底层实现,只要去管理对象即可;
	        	Mybatis 需要自行管理 映射关系;
	缓存方面:
	Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。
	MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
	总结:
	Mybatis:小巧、方便、高效、简单、直接、半自动化
	Hibernate:强大、方便、高效、复杂、间接、全自动化
	
	Mybatis解决了jdbc编程的哪些问题
	
	1、 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
	解决:在SqlMapConfig.xml中配置数据链接池,使用连接池管理数据库链接。
	
	2、Sql语句写在代码中造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
	解决:将Sql语句配置在XXXXmapper.xml文件中与java代码分离。
	
	3、向sql语句传参数麻烦,因为sql语句的where条件不一定,可能多也可能少,占位符需要和参数一一对应。
	解决:Mybatis自动将java对象映射至sql语句,通过statement中的parameterType定义输入参数的类型。
	4、对结果集解析麻烦,sql变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成pojo对象解析比较方便。
	解决:Mybatis自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。
	
	日志区别:
	
	Mybatis 内置的日志工厂提供日志功能
	Hibernate 使用log4j进行处理日志
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值