今天来总结一下如题三者的区别:
JDBC(Java Data Base Connectivity )即 Java 数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用 Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
Hibernate是ORM(Object Relationship Management)框架,是对底层连接数据库和查询数据库进行封装,是JDBC一种实现。比如JDBC是接口,那么 Hibernate就是一个封装的对象类。
Hibernate是一个纯正的面向对象框架。JDBC相当于一个面向过程的语句。所以在项目中应用直接使用JDBC不够面向对象,而Hibernate则是。
iBATIS 提供的持久层框架包括SQL Maps 和 Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例,相对 Hibernate 和Apache OJB等 "一站式” ORM解决方案而言,iBATIS 是一种 “半自动化” 的ORM实现,iBATIS 需要开发人员自己来写sql语句,这可以增加了程序的灵活性,在一定程度上可以作为ORM 的一种补充,程序设计人员应该结合自己的项目的实际情况,来选择使用不同的策略。
iBATIS和Hibernate都做了映射:
iBATIS 是把实体类和sql语句之间建立了映射关系,这种策略可以允许开发人员自己来写合适的sql语句;
Hibernate 在实体类和数据库之间建立了映射关系,对数据库结构提供了较为完整的封装,提供了从POJO(Plain Ordinary Java Object)到数据库表的全套映射机制,程序员往往只需定义好了POJO到数据库表的映射关系,即可通过 Hibernate或者 OJB 提供的方法完成持久层操作,程序员甚至不需要对 SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行。 sql对于开发人员是不可见的,对于那些数据量非常大的应用,无法去优化sql语句。
所以对于 Hibernate,它拥有良好的移植性、可以自动生成SQL语句、还提供了缓存机制。但是因其全自动的ORM类型,导致无法灵活地控制SQL,不适合用于大型项目中,一旦出现问题很难发现。
而 iBATIS 在SQL 优化方面比较便捷,可以进行细粒度的优化。对于标准SQL的可移植性比较方便,但是对于具体的数据库SQL则不方便移植。
简单来说:
JDBC 是一套数据库访问标准,提供了一组接口,是 Java 语言访问数据库用到的东西。
Hibernate是一套ORM映射框架,提供以对象的方式访问数据,但底层还是要把对象映射为 JDBC 来访问的。
iBATIS 也是一套数据库访问框架,但它是把SQL语句给抽出来了,这样将来改语句的时候不用修改代码,底层也是 JDBC。
实践对比:
JDBC:手动
—— 手动写sql
delete、insert、update:要将对象的值一个一个取出传到SQL中,不能直接传入一个对象。
select:返回的是一个 ResultSet,要从ResultSet中一行一行、一个字段一个字段的取出,然后封装到一个对象中,不直接返回一个对象。
Hibernate:全自动
—— 不写sql,自动封装
delete、insert、update:直接传入一个对象
select:直接返回一个对象
iBATIS:半自动化
—— SQL要手动写
delete、insert、update:直接传入一个对象
select:直接返回一个对象
好了,今天就先总结到这里吧,相当于把以前学到的知识又复习了一遍,祝天天好心情,Yeah !