目录
1.2 引入 mybatis-config.xml 配置文件
一、JDBC编程和ORM模型
1. JDBC回顾
- 加载驱动 导入JDBC 连接数据库的 jar 包,利 用 CLASS.forName 加载驱动;
- 获取连接 利用DriverManager 获取 Connection,然后创建 Statement;
- 执行SQL语句 利用 Statement 执行 SQL 语句并结 合 ResultSet 处理结果集映射 Java 对象;
- 关闭资源 先开后关的顺序关闭 ResultSet, Statement,Connection 等资源。
2. JDBC的弊端
- 硬编码:SQL语句存在Java代码中,不能很好的分离数据库语句和 Java语句,造成代码不易维护;
- 代码重复度高 :量的重复代码,以 ResultSet 为例,每次都需要重复解析结果集;
- 底层技术:JDBC属于底层的技术,不支持分布式,缓存等技术,对于复杂场景的应对不好;
- SQL参数固定:SQL语句的参数固定,使得SQL语句不灵活,无法满足多变的场景。
Jdbc的本质
JDBC是SUN公司制定的一套接口(interface)
目的:解耦合——>降低程序的耦合度,提高程序的扩展力
3. ORM模型
ORM 模型是数据库的表和简单 Java 对象(Plain Ordinary Java Object,简称 POJO就是javabean)的映射关系模型,主要解决数据库数据和 POJO 对象的相互映射。
- Java对象:POJO 对象(Plain Ordinary Java Object): 简单的 Java 对象,实际就是 普通 JavaBeans。
- 映射配置配置分为:类与数据库中表 的映射;对象与表中记录的 映射;类的属性与数据库中 表的字段的映射。
- 数据库:按照数据结构来组织、存储 和管理数据的仓库,ORM 模型中最底层的内容。
OBject Relation Mapping 对象关系映射
对象指的是面向面向对象,关系指的是数据库中的表,
例如Java语言中的POJO类与数据库模型之间的对应关系。
常见的ORM模型
- Hibernate Hibernate 是一个 全自动 的ORM 模 型,Hibernate 可以自动生成 SQL 语 句,自动执行
- MyBatis MyBatis 是一款 半自动 的ORM 模型,它支持定制化SQL、存储过程以及高级映射.
Mybatis和hibernate 区别:
- Hibernate是全自动化ORM; Mybatis是半自动化ORM。
- Hibernate简化dao层,不用考虑SQL语句的编写和结果映射,重点放在业务逻辑上; Mybatis需要手写SQL语句以及结果映射。
- Hibernate是一个重量级的框架,内部生成SQL语句,反射操作太多,导致性能下降; Mybatis是一个轻量级的框架,需要自己写sql语句,有较少的反射操作。
- Hibernate 不方便做SQL优化,遇到较复杂的SQL语句需要绕过框架实现复杂, 对多字段的结构进行部分映射困难; Mybatis 不仅可以做SQL优化还可以SQL与Java分离,还可以自行编写映射关系, 复杂的SQL语句Mybatis效率更高
Mybatis优势: 可以进行更细致的SQL优化;容易掌握
Hibernate优势; dao层开发比mybatis简单,mybatis需要维护SQL和结果映射 hibernate数据库移植性好
4. mybatis 解决了jdbc 的问题
- 1.数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库连接池可解决此问题。 解决:在SqlMa