您的位置:首页 > 其它

JDBC、Hibernate、iBATIS 对比

2015-06-28 20:43 246 查看
今天来总结一下如题三者的区别:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: