mybatis及Hibernate

mybatis的优缺点

优点:
1 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响, SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签, 支持编写动态 SQL 语句, 并可重用。
2 、与 JDBC 相比,减少了 50% 以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
3 很好的与各种数据库兼容( 因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持)。
4 、能够与 Spring 很好的集成;
5 、提供映射标签, 支持对象与数据库的 ORM 字段关系映射; 提供对象关系映射标签, 支持对象关系组件维护。
缺点:
1 SQL 语句的编写工作量较大, 尤其当字段多、关联表多时, 对开发人员编写 SQL 语句的功底有一 定要求。
2 SQL 语句依赖于数据库, 导致数据库移植性差, 不能随意更换数据库。

MyBatis Hibernate 有哪些不同

Hibernate基于对象,mybatis基于sql

开发速度的对比:
Hibernate 的真正掌握要比 Mybatis 难些。 Mybatis 框架相对简单很容易上手,但也相对简陋些。
一个项目中用到的复杂查询基本没有,就是简单的增删改查,选择 hibernate 效率就很快了
对于一个大型项目,复杂语句较多 选择 mybatis开发效率更快,而且语句的管理也比较方便。
缓存机制:
两者比较:因为 Hibernate 对查询对象有着良好的管理机制,用户无需关心 SQL 。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。
MyBatis 在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围, 避免Cache 的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。
Hibernate 功能强大,数据库无关性好, O/R 映射能力强,如果你对 Hibernate 相当精通,而且对
Hibernate 进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。 Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计 O/R 映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate 方面需要你的经验和能力都很强才行。
iBATIS 入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的 SQL 使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
iBATIS 的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

#{}${}的区别是什么?

  • #{}是预编译处理、是占位符, ${}是字符串替换、是拼接符。
  • Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 来赋值;
  • Mybatis 在处理${}时, 就是把${}替换成变量的值,调用 Statement 来赋值;
  • #{} 的变量替换是在DBMS中、变量替换后,#{} 对应的变量自动加上单引号
  • ${} 的变量替换是在 DBMS外、变量替换后,${} 对应的变量不会加上单引号
  • 使用#{}可以有效的防止 SQL 注入, 提高系统安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值