ibatis与mybatis区别?Hibernate、MyBatis、JDBC区别?
来源:互联网 发布:互联网大数据挖掘 编辑:程序博客网 时间:2024/05/17 08:34
ibatis与mybatis区别?
ibatis是mybatis的前身,在2010年7\8月份ibatis所项目移到了google,就将ibatis3.x正式改名为mybatis3.x了。
除此之外,mybatis相比ibatis使用起来更加方便,有:
1、Mybatis实现了接口绑定,使用更加方便。
在ibatis2.x中我们需要在DAO的实现类中指定具体对应哪个xml映射文件,
而Mybatis实现了DAO接口与xml映射文件的绑定,自动为我们生成接口的具体实现,使用起来变得更加省事和方便。
这可以说是Mybatis最重要的改进。
注意:
虽然Mybatis支持在接口中直接使用annotation的配置方式来简化配置,
不过强烈建议仍然使用xml配置的方式。毕竟annotation的配置方式功能有限且代码入侵性太强。使用xml配置方式才能体现出Mybatis的优势所在
2、对象关系映射的改进,效率更高
相信很多在使用ibatis2.x的朋友并没有通过ibatis的xml映射文件来实现对象间的关系映射。其实也确实没有必要那么做,因为ibatis2.x采用的是“嵌套查询”的方式将对象之间的关系通过查询语句的直接拼装来实现,其效果和在DAO或Service中自行封装是一样的。
不过这种方式存在“N+1查询问题”。
概括地讲,N+1查询问题可以是这样引起的:
? 你执行了一个单独的SQL语句来获取结果列表(就是+1)。
? 对返回的每条记录,你执行了一个查询语句来为每个加载细节(就是N)。
这个问题会导致成百上千的SQL语句被执行。这通常不是期望的。
而在Mybatis中,除了兼容ibatis2.x中的“嵌套查询”方式外,还提供了直接“嵌套结果”的方式,其效果相当于直接通过一句sql将查询出的dto对象自动封装成所需的对象。
具体实现方法请自行参考Mybatis官方使用手册,不在此累述.
不过实际上这一改进所带来的好处也是很有限的。因为这一方式在使用分页的时候并不起作用,或者说嵌套对象的结果集是不允许进行分页的。这一点在Mybatis框架中已经做出了明确的限制(org.apache.ibatis.executor.resultset.NestedResultSetHandler里34行),而实际项目中需要分页的情况又特别多……
仔细一想,一对多映射确实不能通过配置文件来分页,因为这时查询出的记录数并不等于实际返回对象的size,不过一对一映射为什么也不允许就不太明白了。可能是因为一对一是一对多的特例,而在设计框架的时候并没有考虑去处理或是难于处理这一特例吧。
3、MyBatis采用功能强大的基于OGNL的表达式来消除其他元素。
熟悉struts2的人应该对OGNL表达式不会感到陌生,
MyBatis采用OGNL表达式简化了配置文件的复杂性,使用起来更简洁。
可能较为关心的是
Mybatis实现了接口绑定,使用更加方便。
iBatis / MyBatis 3提供了一个新的功能:的注解。
http://jc-dreaming.iteye.com/admin/blogs/1003781
Hibernate、MyBatis、JDBC区别
1)从层次上看,JDBC是较底层的持久层操作方式,而Hibernate和MyBatis都是在JDBC的基础上进行了封装使其更加方便程序员对持久层的操作。
2)从功能上看,JDBC就是简单的建立数据库连接,然后创建statement,将sql语句传给statement去执行,如果是有返回结果的查询语句,会将
查询结果放到ResultSet对象中,通过对ResultSet对象的遍历操作来获取数据;Hibernate是将数据库中的数据表映射为持久层的java对象,实现
数据表的完整性控制;MyBatis是将sql语句中的输入参数和输出参数映射为java对象,放弃了对数据表的完整性控制,但是获得了更灵活和响应
性能更快的优势。
3)从使用上看,如果进行底层编程,而且对性能要求极高的话,应该采用JDBC的方式;如果要对数据库进行完整性控制的话建议使用Hibernate;
如果要灵活使用sql语句的话建议采用MyBatis框架。
转载自:http://blog.csdn.net/qq_21033663/article/details/50281161
和
http://jc-dreaming.iteye.com/blog/1003778
- ibatis与mybatis区别,hibernate、mybatis、JDBC区别
- ibatis与mybatis区别,hibernate、mybatis、JDBC区别
- ibatis与mybatis区别?Hibernate、MyBatis、JDBC区别?
- Hibernate与Mybatis\ibatis的区别
- hibernate jdbc mybatis 区别
- MyBatis、JDBC、Hibernate区别
- hibernate、MyBatis、JDBC区别
- JDBC,Mybatis,Hibernate区别
- mybatis与ibatis区别
- iBatis与MyBatis区别
- iBatis与MyBatis区别
- ibatis与mybatis区别
- Jdbc&Hibernate&MyBatis&IBatis
- jdbc、hibernate、mybatis的区别
- mybatis 与ibatis的区别
- mybatis与ibatIS的区别
- Mybatis与ibatis的区别
- iBatis与MyBatis区别2
- Android Input流程分析(二):EventHub
- HDU -- 5601 N*M bulbs 【思维 + 规律】
- Redis与memcached
- oracle查看当前用户信息
- 高效学习-编程
- ibatis与mybatis区别?Hibernate、MyBatis、JDBC区别?
- 不用框架,python实现卷积神经网络
- 用数字电路和模拟电路搭建出循迹小车(二)
- 指针的引用与运算
- Linux7中使用udev
- 草稿大纲
- 数据库索引的实现原理
- css中div中的内容居中
- Java编码规范,让你的代码赏心悦目--有意义的命名