JDBC、Hibernate、iBATIS 对比

今天来总结一下如题三者的区别:

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:返回的是一个 ResultS
et,要从ResultSet中一行一行、一个字段一个字段的取出,然后封装到一个对象中,不直接返回一个对象。

 Hibernate:全自动
  —— 不写sql,自动封装
  delete、insert、update:直接传入一个对象
  select:直接返回一个对象

iBATIS:半自动化
  —— SQL要手动写
  delete、insert、update:直接传入一个对象
  select:直接返回一个对象   


好了,今天就先总结到这里吧,相当于把以前学到的知识又复习了一遍,祝天天好心情,Yeah


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值