评论走起

Mybatis和JDBC的区别(优缺点)

JDBC是Java提供的一个操作数据库的API; [b]MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。[/b] Mybatis的优点: 1. 优化获取和释放 2.SQL统一管理,对数据库进行存取操作(修改SQL一个需要重新编译 一个不需要) 3.生成动态SQL语句 4.能够对结果集进行映射(一个是resultset一个可以映射成JavaBean对象、一个Map、一个List等等) 5.mybatis提供了一级和二级缓存(需要配置打开),强大的动态sql,自动化的session管理,都比手工维护来的方便和安全。 另外: MyBatis使用SqlSessionFactoryBuilder来连接完成 JDBC需要代码完成的数据库获取和连接,减少了代码的重复。 mybatis的sql统一放在xml文件 优雅 统一 ,好管理 [b]mybatis的核心组件:[/b] SqlSessionFactoryBuilder:会根据配置信息或代码来生成SqlSessionFactory; SqlSessionFactory:依靠工厂来生成SqlSession; SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口; SQL Mapper:是MyBatis新设计的组件,由一个Java接口和XML文件构成,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。 构建SqlSessionFactory 每个MyBatis应用都是以SqlSessionFactory的实例为中心的,它的任务是创建SqlSession。SqlSesion类似于一个JDBC的Connection对象。 提供了2种方式创建SqlSessionFactory:一种是XML配置的方式,一种是代码的方式,推荐使用XML配置的方式。 [b]mybatis组件生命周期[/b] SqlSessionFactory在MyBatis应用的整个生命周期中,每个数据库只对应一个SqlSessionFactory,可以实现一个工具类,以单例模式获取该对象。 SqlSession的生命周期在请求数据库处理事务的过程中,它是一个线程不安全的对象,在涉及多线程的时候要特别当心。它存活于一个应用的请求和操作,可以执行多条SQL,保证事务的一致性。 Mapper的作用是发送SQL,然后返回需要的结果,或者执行SQL修改数据库的数据,所以它应该在一个SqlSession事务方法之内,如同JDBC中一条SQL语句的执行,它最大的范围和SqlSession是相同的。

评论