Mybatis技术原理(一)

一:JDBC、Mybatis与Hibernate

1.1 JDBC

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

由于JDBC操作对象多,并且工作量大,因此很快被ORM(对象关系映射)模型所取代。它主要是解决数据库表数据与java的POJO对象之间的映射关系。

1.2 Hiberbate

起初,SUN公司推出了Java EE服务器组件模型(EJB),但由于该模型适用范围小并且配置复杂,因此很快被Hibernate所取代。

Hibernate基本使用:

1.配置一个全局的xxx.cfg.xml文件用于与数据库建立连接(基本包含url,username,password信息)。
2.配置一个数据库表的列与POJO对象的属性以及类型的对应关系的xxx.hbm.xml文件。也就是制定映射规则。
3.建立Hibernate的工厂对象(SessionFactory),用它来做全局对象,产生Session接口:
private static final SessionFactory sessionFactory;
Configuration c = new Configuration().configure(“xxx.cfg.xml”);
sessionFactory = cfg.buildSessionFactory();

Hibernate的优缺点:

优点:
1.消除了代码映射规则,使之隐藏到xml或者注解里面去配置;
2.无需再管理数据库连接,它也配置到了xml文件中了;
3.一个会话中,不用操作多个对象,只需要操作session对象就可以了;
4.关闭资源,只需要关闭一个session即可。

缺点:
1.全表的映射会带来不便;
2.无法根据不同的条件组装不同的sql;
3.对多表关联和复杂的sql查询支持比较差,需要自己写sql,返回后将数据组装到POJO对象中;
4.不能有效支持存储过程;
5.虽然有HQL这样的语言来代替sql,但是性能太差。

1.3 Mybatis

相对于Hibernate,它是属于半自动映射,因为它需要配置POJO,SQL以及映射关系,而全表映射的Hibernate只需要提供POJO和映射关系就可以了。Mybatis弥补了Hibernate的不足。

Mybatis的基本使用:

1.配置一个数据库连接的XML配置文件(包含URL,username,password等信息),称为基础配置文件(主要有采用的事务管理模式,如JDBC,再次有数据库的连接信息,最后有定义映射器,也就是引用2中的文件);
2.配置一个映射文件,在这个文件中包含SQL语句以及映射关系;
3.创建Mpaper接口;
4.为使用mybatis,需要建立SqlSessionFactory:
(1)private static SqlSessionFactory sqlSessionFactory = null;
(2)sqlSessionFactory = new (3)SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(“mybatis_config.xml”));
(4)return sqlSessionFactory;

当然,除了上述的xml方式之外,还可以使用代码方式去构建数据库连接池,构建数据库事务处理方式,创建数据库运行环境,构建Configuration对象,注册一个Mybatis上下文别名,加入一个映射器,使用SqlSessionFactoryBuilder来构建 SqlSessionFactory。

二:Mybatis的基本构成

2.1 SqlSessionFactoryBuilder

SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口),它存在的意义就是生成SqlSessionFactoryBuilder。因此,它的生命周期只存在于方法的局部。

2.2 SqlSessionFactory

SqlSessionFactory:依靠工厂来生成SqlSession(会话)。而SqlSession就相当于是JDBC里的Connection,当应用程序访问数据库时,都会通过SqlSessionFactory来生成SqlSession,因此,它的生命周期贯穿于Mybatis整个生命周期中。

2.3 SqlSession

SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口。它的生命周期是在请求数据库处理事务的过程中。

2.4 SQL Mapper

SQL Mapper:它是Mybatis新设计的组件,它是一个由java接口和XML文件或者注解构成,需要给出对应的sql和映射规则,它负责发送sql去执行,并返回结果。它的生命周期是在一个SqlSession事务方法之内,如同JDBC中的一条SQL语句的执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值