jdbc和mybatis杂谈


既然是杂谈,就不要太要求格式等问题了,也不要太扣技术细节问题。如有重大问题,还请斧正。

jdbc 和mybatis要做的事都是一样的。


jdbc 和mybatis 效率差距主要因为什么?

jdbc毫无疑问比mybatis快,其中一个原因是mybatis需要去映射。映射是在内存完成,应该还好。

这个问题相当于为什么java比c c++慢。

补充:

Java 底层是指 Java 类库,还是 JVM?

指JVM 的话是 C++ 实现的。
           指Java 类库是 Java 实现的。
           可以简单的说,任何在windows下运行的程序,底层都是C/C++或者ASM,这是硬件指令系统决定的。

mybatis底层终究是调用jdbc的。而映射这东西不管是对象转一些值,还是一些值转对象,都需要调用反射api的,

尽管你可以把成员变量getxx()方法对应的Method对象缓存起来,但是终究还是要调invoke的。

反射相对而言是比较影响性能的了。

看了看mybatis的底层实现,确实是调用到反射。应该就是反射这个东西比较影响性能

 

为什么jdbc是“最好的”,还要用mybatis替代?
因为操作简单,提高开发效率,节约不必要浪费的时间(你要理解,技术是懒人推动的)


jdbc和mybatis的区别?

  mybatis也是基于JDBC的。

  Java与数据库操作仅能通过JDBC完成。

  mybatis也要通过JDBC完成数据查询、更新这些动作。

  mybatis仅仅是在JDBC基础上做了,OO化、封装事务管理接口这些东西。

  理解:JDBC是地基,mybatis/Hibernate 是两栋外形各自有特点的楼房,楼房之间可以比较!地基就这一种。

传统JDBC如何操作数据?

  使用JDBC编程需要连接数据库,注册驱动和数据库信息
  操作Connection,打开 Statement /prepareStatement对象 。
  通过Statement执行SQL, 返回结果到ResultSet对象。
  使用ResultSet读取数据,然后通过代码转化为具体的POJO对象。
  关闭数据库的相关资源。

jdbc存在弊端:

  工作量相对较大,每次都要去创建,关闭,获取
  JDBC编程可能产生的异常进行捕捉处理并正确关闭资源
  对象关系映射(Object Relational Mapping)简称 ORM

mybatis特点:

  易于上手和掌握。
  sql写在xml里,便于统一管理和优化。
  解除sql与程序代码的耦合。
  提供映射标签,支持对象与数据库的orm字段关系映射
  提供对象关系映射标签,支持对象关系组建维护
  提供xml标签,支持编写动态sql。

总的来说,mybatis提高了开发效率,使开发变得简单,处理速度上肯定是jdbc好点(仅仅是好一点)。有时候我还是会直接使用jdbc(可能公司用的原因,封装成工具类后很好用),但不是因为那一点效率,可能是情怀吧。

你可能感兴趣的:(Java)