您的位置:首页 > 编程语言 > Java开发

Java持久层选择Hiberante和iBATIS的时机

2009-09-10 10:31 183 查看
Hibernate

是进行持久层开发的重要框架,它提供了与数据库无关的
API

接口,可以让开发者不必关心数据库的差异,重点关注业务层的开发。

iBATIS

是又一个
O/R Mapping

解决方案,和
Hibernate

相比,
iBATIS

最大的特点就是小巧、容易上手,并且它是基于
SQL

的解决方案,其执行效率等价于直接使用
JDBC



8.1.1

Hibernate

开发流程

Hibernate


Java

应用和关系数据库之间的桥梁,它负责
Java

对象和关系数据之间的映射。
Hibernate

内部封装了通过
JDBC

访问数据库的操作,向上层应用提供了面向对象的数据访问
API

。在
Java

应用中使用
Hibernate

包含以下步骤:


1

)创建
Hibernate

的配置文件:该文件负责初始化
Hibernate

配置,包括数据库配置和映射文件配置;


2

)创建
Hibernate

映射文件:每一个数据表对应一个映射文件,该文件描述了数据库中表的信息,也描述了对应的持久化类的信息;


3

)创建持久化类:每一个类对应一个数据库表,通过映射文件进行关联;

以上三步是开发
Hibernate

要实现的关键内容。接下来就要面向
Web

应用层进行编码,通常会分为
DAO

层和
Service

层:


1

)编写
DAO

层:通过
Hibernate API

编写访问数据库的代码;


2

)编写
Service

层:编写业务层实现,调用
DAO

层类代码;


3-2

显示了调用的过程及
Hibernate

在应用中所处的位置。


3-2
Hibernate

开发流程图

8.1.2

iBATIS

开发步骤

iBATIS


Java

应用和关系数据库之间的桥梁,它负责
Java

对象和关系数据之间的映射。
iBATIS

内部封装了通过
JDBC

访问数据库的操作,向上层应用提供了面向对象的数据访问
API

。在
Java

应用中使用
iBATIS

包含以下步骤:


1

)创建
iBATIS

的配置文件:该文件负责初始化
iBATIS

配置,包括数据库配置和映射文件配置;


2

)创建
iBATIS

映射文件:每一个数据表对应一个映射文件,该文件描述了数据库中表的信息,也描述了对应的持久化类的信息;


3

)创建持久化类:每一个类对应一个数据库表,通过映射文件进行关联;

以上三步是开发
iBATIS

要实现的关键内容。接下来就要面向
Web

应用层进行编码,通常会分为
DAO

层和
Service

层:


1

)编写
DAO

层:通过
iBATIS API

编写访问数据库的代码;


2

)编写
Service

层:编写业务层实现,调用
DAO

层类代码;


8-1

显示了调用的过程及
iBATIS

在应用中所处的位置。


8-1
iBATIS

开发流程图

8.1.3

选择
Hibernate

还是
iBATIS

从以上
iBATIS

的开发过程可以看出,它与
Hibernate

的开发过程是一一对应的,都是由映射文件和持久化类作为底层数据库的沟通接口,上层调用
iBATIS


Hibernate


API

来编写
DAO


Service

层。但是在实际的应用中,它们则拥有各自的特点,这也决定了它们适用的场合。


1


Hibernate

的特点:

Hibernate

功能强大,数据库无关性好,
O/R

映射能力强,如果对
Hibernate

相当精通,而且对
Hibernate

进行了适当的封装,那么整个持久层代码会相当简单,需要写的代码很少,开发速度很快。
Hibernate

对数据库结构提供了较为完整的封装,
Hibernate


O/R Mapping

实现了
POJO

和数据库表之间的映射,以及
SQL

的自动生成和执行。程序员往往只需定义好了
POJO

到数据库表的映射关系,即可通过
Hibernate

提供的方法完成持久层操作。程序员甚至不需要对
SQL

的熟练掌握,
Hibernate/OJB

会根据制定的存储逻辑,自动生成对应的
SQL

并调用
JDBC

接口加以执行。

Hibernate

的缺点就是学习成本高,要精通需要更多的时间,而且如何设计
O/R

映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好
Hibernate

方面需要更多的经验和能力,但是
Hibernate

现在已经是主流
O/R Mapping

框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于
iBATIS




2


iBATIS

的特点:

iBATIS

入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的
SQL

使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。当系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的
SQL

语句(或存储过程)才能达到系统性能设计指标。在这种情况下
iBATIS

会有更好的可控性和表现。

在实际的开发来说,二者有以下区别:



iBATIS

需要手写
SQL

语句,也可以使用工具自动生成,
Hibernate

则基本上可以自动生成,编码时需要编写
HQL





iBATIS

可以进行细粒度的优化,原因是
iBATIS

是基于
SQL

的;



在不考虑
Cache

的情况下,
iBATIS

应该会比
Hibernate

快很多。

总而言之,
Hibernate

iBATIS
复杂,学习成本高,
iBATIS
简单容易上手,是基于原生
SQL
的框架。可以说,
Hibernate
功能强大而复杂,
iBATIS
简单小巧。由此你也不难判断在什么情况下选择什么框架了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: