什么是JDBC?什么是MyBatis?MyBatis的生命周期?什么是Hibernate?

ORM(Object-Relationship-Mapping):对象关系映射,是一种思想,指将数据库中的每一行数据用对象的形式表现出来。

JPA(Java-Persistence-API):Java持久化接口,是JavaEE关于ORM思想的一套标准接口,只是一套接口,不是具体的实现。

什么是JDBC?

JDBC(Java DataBase Connectivity)Java数据库连接,用于Java编程语言和数据库之间的连接的标准Java API,换句话说:JDBC是Java与数据库连接的API(应用编程接口)

JDBC包含的主要组件:① JDBC Driver(JDBC驱动程序)② Connection(连接)③ Statement(声明)④ ResultSet(结果集)

什么是MyBatis?

MyBatis前身叫ibatis是基于Java的数据持久层框架,它内部封装了JDBC,使开发者只需要关注SQL语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。MyBatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射为Java对象并返回。MyBatis 的本质就是 Java 对数据库的操作。

MyBatis虽然实现了JPA但是它并不是一个完完全全的ORM组件,而是一个基于SQL开发的半ORM组件。

MyBatis的生命周期?

1、加载mybatis的配置文件(也加载关联的映射文件)

InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");

2、构建SqlSessionFactory工厂

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSessionFactory 的生命周期存在于整个 MyBatis 的应用之中,一旦创建了 SqlSessionFactory,就要长期保存它,直至不再使用 MyBatis 应用。
SqlSessionFactoryBuilder 的作用在于创建 SqlSessionFactory,创建成功后它就失去了作用,所以 SqlSessionFactoryBuilder 不需要长期存在,只作用于创建 SqlSessionFactory 的方法中即可。

3、创建能执行映射文件的SqlSession

SqlSession sqlSession = factory.openSession();

SqlSession 应该存活在一个业务请求中,处理完整个请求后,应该关闭这条连接,让它归还给 SqlSessionFactory,否则数据库资源就很快被耗费精光,系统就会瘫痪,所以用 try...catch...finally...语句来保证其正确关闭。

4、创建 SQL Mapper 接口,执行sqlSession.insert等方法

User user = new User("李四", "qqq", "小李", "lisi@qq.com");
sqlSession.insert("com.mybatis.pojo.User.add", user);
sqlSession.commit(); // 事务提交
sqlSession.close(); // 关闭

SQL Mapper 接口由 SqlSession 所创建,它的生命周期应该小于等于 SqlSession 的生命周期。 Mapper 代表的是一个请求中的业务处理 ,所以它应该在一个请求中,一旦处理完了相关的业务,就应该废弃它。

什么是Hibernate?

Hibernate是数据访问层的框架,对JDBC进行了封装,使用Hibernate可以直接访问对象,Hibernate自动将此访问转换为SQL执行,从而达到间接访问数据库的目的,简化了数据访问层的代码开发。

Hibernate是一个完完全全的ORM组件,它是完全基于对象来操作数据库中的记录。

JDBC 、 MyBatis 、 Hibernate 的比较

JDBC — MyBatis/ibatis(轻量级)基于SQL语句 — Hibernate(重量级)基于方法

开发效率:JDBC < MyBatis < Hibernate

运行效率:JDBC > MyBatis > Hibernate

SQL语句方面:MyBatis 手动编写 SQL,支持动态 SQL、处理列表、动态生成表名、支持存储过程。工作量相对大些。

SQL语句方面:Hibernate 不需要编写大量的 SQL,就可以完全映射,提供了日志、缓存、级联(级联比 MyBatis 强大)等特性,此外还提供 HQL(Hibernate Query Language)对 POJO 进行操作。但会多消耗性能。

映射方面:MyBatis 是一个半自动映射的框架,因为 MyBatis 需要手动匹配 POJO、SQL 和映射关系。

映射方面:Hibernate 是一个全表映射的框架,只需提供 POJO 和映射关系即可。

总体来说:MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。

对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用 Hibernate,而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值