mybatis也是基于JDBC的。
Java与数据库操作仅能通过JDBC完成。
mybatis也要通过JDBC完成数据查询、更新这些动作。
mybatis仅仅是在JDBC基础上做了,OO化、封装事务管理接口这些东西。
传统JDBC操作数据
使用JDBC编程需要连接数据库,注册驱动和数据库信息操作Connection,打开 Statement 对象 。通过Statement执行SQL, 返回结果到ResultSet对象。使用ResultSet读取数据,然后通过代码转化为具体的POJO对象。关闭数据库的相关资源。jdbc存在弊端:
工作量相对较大,每次都要去创建,关闭,获取JDBC编程可能产生的异常进行捕捉处理并正确关闭资源对象关系映射(Object Relational Mapping)简称 ORM
ORM模型就是数据库的表和简单Java对象(Plain Ordinary Java Object,简称POJO)的映射关系模型。
ORM模型提供了统一的规则使得数据库的数据通过配置便可轻易的映射到POJO上
常见的有两种
mybatis
易于上手和掌握。sql写在xml里,便于统一管理和优化。解除sql与程序代码的耦合。提供映射标签,支持对象与数据库的orm字段关系映射提供对象关系映射标签,支持对象关系组建维护提供xml标签,支持编写动态sql。hibernate
消除了代码的映射规则,它全部被分离到XML或者注解里面去配置。无需再管理数据库连接,它也配置到XML里面。一个会话中,不要操作多个对象,只要操作Sesison即可。关闭资源只需要关闭一个Session即可。mybaits与hibernate区别
1:性能
jdbc:数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。
mybatis:在SqlMapConfig.xml中配置数据连接池,使用数据库连接池管理数据库连接。
2:系统维护
jdbc:将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。
mybatis:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。
3:输入参数
jdbc:向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。
mybatis:自动将java对象映射至sql语句,将sql语句及占位符号和参数全部配置在xml中。
4:输出参数
jdbc:从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。
mybatis:自动将sql执行结果映射至java对象,通过statement中的resultType定义输出结果的类型。
-------------------------------------------------------------------------------------
原文:https://blog.csdn.net/BushQiang/article/details/79839369
版权声明:本文为博主原创文章,转载请附上博文链接!