Hibernate会自动生成SQL语句,上边是有的细节.

双方的比较: 一 .   IbatisNet 万分简单命理术数, NHibernate 相对较复杂,门槛较高。 二 .   2者都以比较不错的开源产品 三 .   当系统属于3次开发 , 不可能对数据库结构实现控制和修改 , 那 IbatisNet 的弹无虚发将比 NHibernate 更契合 4 .   系统数据处理量巨大,品质供给颇为苛刻,那往往意味着咱们亟须经过通过中度优化的 SQL 语句(或存款和储蓄进度)才能完结系统质量设计目标。在那种情况下 IbatisNet 会有更加好的可控性和彰显。 5 .   IbatisNet 供给手写 sql 语句,也足以生成一部分, NHibernate 则大多能够自动生成,偶尔会写一些 Hql 。同样的要求 ,IbatisNet 的工作量比 NHibernate 要大过多。类似的,假使提到到数据库字段的改动, NHibernate 修改的地点很少,而 IbatisNet 要把那多少个 sql mapping 的地点相继修改。 六 .   最要紧的一句话是 IbatisNet 的小编说的: If you are starting a new project and you’re in full control of your object model and database design, NHibernate is a good choice of O/奥迪Q5 tool. If you are accessing any 三rd party databases (e.g. vendor supplied), or you’re working with a legacy database, or even just a really poorly designed database, then an O/昂Cora mapper might not be capable of handling the situation. That’s were an SQL Mapper comes in handy

各位国庆喜笑颜开快乐!

而iBATIS的着力点,则在于POJO与SQL之间的映
射关系。约等于说,iBATIS并不会为程序员在运维期自动生成SQL执行。具体的SQL供给程序员编写,然后经过照射配置文件,将SQL所需的参数,以
及再次回到的结果字段映射到钦定POJO。使用iBATIS提供的OKugaM机制,对工作逻辑完毕人口而
言,面对的是彻头彻尾的Java对象,那①层与通过Hibernate
完毕O奥迪Q叁M而言基本1致,而对于具体的数码操作,Hibernate会自动生成SQL语句,而iBATIS则要求开发者编写具体的SQL语句。绝对Hibernate而言,iBATIS以SQL开发的工作量和数据库移植性上的投降,为系统规划提供了更大的即兴空间。

  1. iBatis 能够拓展细粒度的优化
    譬如小编有1个表,那几个表有多少个或许几13个字段,笔者须求立异当中的四个字段,iBatis
    很简短,执行2个sql UPDATE TABLE_A SET column_1=#column_1# WHERE
    id=#id# 但是用 Hibernate 的话就相比较麻烦了,缺省的图景下 hibernate
    会更新具有字段。 当然作者记得 hibernate
    有3个选项能够操纵只保留修改过的字段,不过自身不太显明这些职能的阴暗面效果。
    比如说:小编急需列出三个表的壹部分剧情,用 iBatis
    的时候,那其中的好处是能够少从数据库读很多数目,节省流量SELECT ID, NAME
    FROM TABLE_WITH_A_LOT_OF_COLUMN WHERE …一般景色下Hibernate
    会把持有的字段都选出来。比如说有三个方面表有七个字段,在这之中有一三个比较大的字段,varchar(255)/text。上面的场景中自小编干吗要把他们也选出来呢?用hibernate
    的话,你又无法把那三个不须要的字段设置为lazy
    load,因为还有为数不少地点必要三遍把1切 domain object
    加载出来。今年就能显现出ibatis
    的便宜了。如果本人索要立异一条记下(1个对象),假诺利用
    hibernate,供给现把对象 select 出来,然后再做
    update。那对数据库来说就是两条sql。而iBatis只供给一条update的sql就足以了。减弱叁次与数据库的互相,对于品质的提拔是尤其重大。
  2. 开发方面:
    支出作用上,作者以为两岸应该大约。可维护性方面,作者觉得 iBatis
    越来越好一些。因为 iBatis 的 sql 都保留到独门的文件中。而 Hibernate
    在稍微情状下也许会在 java
    代码中保sql/hql。相对Hibernate“O/中华V”而言,iBATIS 是一种“Sql
    Mapping”的OPRADOM完成。 而iBATIS 的着力点,则在于POJO
    与SQL之间的映照关系。相当于说,iBATIS并不会为程序员在运维期自动生成SQL
    执行。具体的SQL
    须求程序员编写,然后经过炫耀配置文件,将SQL所需的参数,以及重返的结果字段映射到钦赐POJO。使用iBATIS
    提供的O陆风X八M机制,对工作逻辑达成人口而言,面对的是彻头彻尾的Java对象,那壹层与经过Hibernate
    达成O昂科威M 而言基本壹致,而对于现实的多少操作,Hibernate会自动生成SQL
    语句,而iBATIS 则供给开发者编写具体的SQL 语句。绝对Hibernate而言,iBATIS
    以SQL开发的工作量和数据库移植性上的投降,为系统规划提供了越来越大的随机空间。
  3. 运作功能
    在不思念 cache 的处境下,iBatis 应该会比hibernate 快1些要么很多。

  NHibernate 是如今最流行的
Java O/中华V mapping 框架
Hibernate 的移植版本,当前版本是
一.0 .贰 。它出身于
sf.net..IbatisNet 是此外1种美好的
Java O/HummerH二 mapping 框架,当前版本是
一.2 。近来属于
apache

的二个子项目了。
相对
NHibernate “
O/R ”而言,
IbatisNet 是一种“
Sql Mapping ”的

ORM实现。
NHibernate 对数据库结构提供了相比完整的包裹,
NHibernate 的
O/Kuga Mapping 完毕了
PO 和数据库表之间的照耀,以及
SQL 的自动生成和实践。程序员往往只需定义好了
PO 到多少库表的炫耀关系,即可通过
NHibernate 提供的诀要成功持久层操作。程序员甚至不须求对
SQL 的熟识驾驭,
NHibernate
会依据相制版定的囤积逻辑,自动生成对应的
SQL 并调用
ADO.NET

接口加以实施。 

IbatisNet 的着力点,则在于
PO 与
SQL 之间的照耀关系。也正是说,
IbatisNet 并不会为程序员在运维期自动生成
SQL 执行。具体的
SQL 需求程序员编写,然后经过炫耀配置文件,将
SQL 所需的参数,以及再次来到的结果字段映射到内定

PO。
使用
IbatisNet 提供的
O奥德赛M 机制,对事情逻辑实现人口而言,面对的是纯粹的
DotNet 对象,那一层与经过
NHibernate 完成O奔驰G级M 而言基本一致,而对此现实的多少操作,
NHibernate 会自动生成
SQL 语句,而
IbatisNet 则须求开发者编写具体的
SQL 语句。相对NHibernate 而言,
IbatisNet 以
SQL
开发的工作量和数据库移植性上的折衷,为系统规划提供了更加大的随机空间。 

 

ibatis:sql须求团结写
hibernate:sql自动生成
地方是最大的区别,上面是一些细节.
接纳Hibernate依然iBATIS都有它的道理:
Hibernate的特点:
Hibernate效用强大,数据库无关性好,O/奥迪Q3映射能力强,假若你对Hibernate特出通晓,而且对Hibernate举行了合适的卷入,那么您的品种全体持久层代码会非凡简单,供给写的代码很少,开发进度高速,非常爽。以数据库字段11对应映射获得的PO和Hibernte这种对象化映射获得的PO是一心分化的,本质差异在于那种PO是扁平化的,不像Hibernate映射的PO是可以发布立体的靶子继承,聚合等等关系的,那将会直接影响到你的1切软件系统的安排性思路。Hibernate对数据库结构提供了较为完整的卷入,Hibernate的O/RAV四Mapping实现了POJO 和数量库表之间的映照,以及SQL
的自动生成和推行。程序员往往只需定义好了POJO
到数码库表的炫耀关系,即可通过Hibernate
提供的主意成功持久层操作。程序员甚至不须求对SQL 的领悟驾驭,
Hibernate/OJB 会依据相制版定的存款和储蓄逻辑,自动生成对应的SQL 并调用JDBC
接口加以实施。Hibernate的败笔正是学习秘诀不低,要精通门槛越来越高,而且怎么设计O/翼虎映射,在性质和对象模型之间怎么着衡量取得平衡,以及哪些用好Hibernate方面要求你的经历和力量都很强才行,可是Hibernate今后已经是主流O/奥迪Q3Mapping框架,从文书档案的丰裕性,产品的完善性,版本的付出进度都要强于iBATIS。
iBATIS的特点:
iBATIS入门简单,即学即用,提供了数据库查询的自行指标绑定成效,而且一而再了很好的SQL使用经验,对于尚未那么高的对象模型供给的类别以来,卓绝全面。iBATIS的败笔正是框架照旧比较简陋,功用尚有缺点和失误,纵然简化了多少绑定代码,但是任何底层数据库查询实际依然要本人写的,工作量也相比大,而且不太不难适应高速数据库修改。当系统属于3回开发,不能够对数据库结构达成控制和修改,那iBATIS的八面后珑将比Hibernate更契合。系统数据处理量巨大,品质要求极为苛刻,那频繁代表我们务必经过通过高度优化的SQL语句(或存款和储蓄进度)才能落得系统本性设计指标。在那种状态下iBATIS会有更加好的可控性和呈现。
对此实际的开发进行的可比:
一.
iBATIS亟需手写sql语句,也能够生成1部分,Hibernate则大多能够自动生成,偶尔会写一些Hql。同样的供给,iBATIS的工作量比
Hibernate要大过多。类似的,借使涉嫌到数据库字段的修改,Hibernate修改的位置很少,而iBATIS要把那个sql
mapping的地点相继修改。

二. 2者的自己检查自纠

十)对缺省的cache支持。iBatis对缺省的cache扶助不够好,不过hibernate的cache帮忙其实也不是很好,而且很复杂。特别是对此大并发量的运用。所以本身更赞成于本人管理cache。

1. 简介

二)
2者都以相比较不错的开源产品。但Hibernate以后已经是主流O/PRADOMapping框架,从文书档案的丰裕性,产品的完善性,版本的支出进程都要强于iBATIS。

Hibernate对数据库结构提供了较为完整的卷入,Hibernate的O/奥德赛Mapping达成了POJO和多少库表之间的映照,以及SQL的自动生成和推行。程序员往往只需定义好了POJO到数码库表的照耀关系,即可通过
Hibernate提供的方法成功持久层操作。程序员甚至不要求对SQL的熟稔驾驭,Hibernate/OJB会依照相制版定的存款和储蓄逻辑,自动生成对应的SQL并调用JDBC接口加以实施。

八)  运维功用 
在不思量cache的景象下,iBatis应该会比hibernate快1些只怕很多(依据真实境况会有所分裂)。 
9)
对分歧数据库类型的帮衬。iBatis对差别数据库类型的支撑不够好,假设您要开发的种类是要在对中多少间移植,那只怕用hibernate相比较好。 

  • 开发功能上,笔者认为互相应该差不离 
  • 可维护性方面,作者觉着iBatis更加好有的。因为iBatis的sql都保存到独门的文书中。而Hibernate在有点景况下可能会在java代码中保存sql/hql。

六) iBatis需求手写sql语句,也足以生成壹部分,Hibernate则大多能够自动生成,偶尔会写一些Hql。同样的须要,iBATIS的工作量比
Hibernate要大过多。类似的,即使涉嫌到数据库字段的改动,Hibernate修改的地方很少,而iBATIS要把那个sql
mapping的地点相继修改。

四)
系统数据处理量巨大,质量须求颇为苛刻,那频仍代表大家必须透过通过中度优化的SQL语句(或存款和储蓄进程)才能落得系统脾气设计目的。在那种气象下iBATIS会有越来越好的可控性和显示。iBatis比Hibernate更易于实行sql的优化。鉴于一般系统天性的瓶颈都在数据库上,所以那或多或少是iBatis非凡重大的3个优势。

选料Hibernate依然iBATIS都有它的道理: 

1一) 以数据库字段1一对应映射得到的PO(persistant object)和Hibernte这种对象化映射得到的PO是截然分裂的,本质差别在于那种PO是扁平化的,不像Hibernate映射的PO是可以发挥立体的靶子继承,聚合等等关系的,那将会一贯影响到您的漫天软件系统的宏图思路。

1)iBATIS十分简单命理术数,Hibernate相对较复杂,门槛较高。iBATIS拿来文档看半天到两日就能够操纵了。Hibernate或者须要三倍以上的年华来精晓。

1二) 最重点的一句话是iBATIS的撰稿人说的:If
you are starting a new project and you’re in full control of your object
model and database design, Hibernate is a good choice of O/LX570 tool.If you
are accessing any 三rd party databases (e.g. vendor supplied), or you’re
working with a legacy database, or even just a really poorly designed
database, then an O/PAJERO mapper might not be capable of handling the
situation. That’s were an SQL Mapper comes in handy

叁.
怎么挑选

三)
当系统属于一遍开发,不能对数据库结构完结控制和改动,那iBATIS的百步穿杨将比Hibernate更切合。

  • Hibernate作用强大,数据库非亲非故性好,O/途观映射能力强,若是你对Hibernate万分精通,而且对Hibernate举行了适宜的包装,那么你的项目总体持久层代码会卓越简单,必要写的代码很少,开发进程急速,非凡爽。
  • Hibernate的弱项正是上学秘诀不低,要精通门槛更加高,而且怎么设计O/本田CR-V映射,在性质和对象模型之间如何度量取得平衡,以及哪些用好Hibernate方面须求你的经历和能力都很强才行。
  • iBATIS入门简单,即学即用,提供了数据库查询的机关目的绑定效能,而且继续了很好的SQL使用经验,对于从未那么高的目标模型须求的项目来说,万分完善。
  • iBATIS的老毛病正是框架依然相比较简陋,成效尚有缺点和失误,固然简化了多少绑定代码,然则任何底层数据库查询实际依然要协调写的,工作量也相比较大,而且不太不难适应高速数据库修改。

5) iBatis
能够开始展览细粒度的优化

Hibernate是当下最流行的O/Rubiconmapping框架。它出身于sf.net,将来1度变成Jboss的一部分了。iBATIS是此外一种名特新优精的O/猎豹CS陆mapping框架,现已更名称叫myBATIS。近期属于apache的二个子项目了。相对Hibernate”O/CR-V”而言,iBATIS
是一种”Sql Mapping”的O本田UR-VM实现。

原来的文章出处:http://blog.csdn.net/ya2dan/article/details/7396598

7)
开发方面 

  • 例如我有二个表,那个表有多少个只怕几11个字段,作者急需更新当中的二个字段,iBatis相当的粗略,执行1个sql:UPDATE
    table_a SET column_1=#column_1# WHERE
    id=#id# 可是用Hibernate的话就相比较艰巨了,缺省的场馆下hibernate会更新具有字段。当然,hibernate有1个选取能够控
    制只保留修改过的字段。
  • 本人索要列出八个表的壹些剧情,用iBatis的时候,那其间的利益是能够少从数据库读很多数额,节省流量SELECT
    id, name FROM table_with_a_lot_of_column WHERE …

    • 貌似情况下Hibernate会把全部的字段都选出来。比如说有三个方面表有七个字段,在那之中有一八个相比较大的字段,varchar(255)/text。上面的现象中自作者何以要把她们也选出来呢?
    • 用hibernate的话,你又不能把这三个不需求的字段设置为lazy
      load,因为还有为数不少地点供给一遍把全体 domain object
      加载出来。这年就能显出ibatis的便宜了。
    • Hibernate还有二个方案,正是生成javabean/map/object[](谢谢leelun/cjmm),可是这样的话就大概会发出大批量的多余class。map/object[]
      的办法应该正确,作者比较喜欢那种方法。
  • 比方作者须要创新一条记下(八个对象),如若运用hibernate,要求现把对象select出来,然后再做update。那对数据库来说就是两条sql。而iBatis只须要一条update的sql就足以了。减弱三次与数据库的交互,对于质量的晋级是十三分重要。

相关文章