论坛首页 入门技术论坛

我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)

浏览 69623 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-01-04  
我给凑个理由,学HB花时间不是白花的,从HB过渡到JPA就是平滑过渡。
0 请登录后投票
   发表时间:2007-01-04  
关于hibernte对于遗留系统(DB)集成的问题,可以看看这本书
http://www.theserverside.com/tt/articles/article.tss?l=JavaPersistenceHibernate
1 请登录后投票
   发表时间:2007-01-05  
我写了工具来批量生成ibatis 框架下的文件
0 请登录后投票
   发表时间:2007-04-26  
感觉楼主对hibernate还是很不了解,上面所列的hibernate的问题大部分都不是问题
0 请登录后投票
   发表时间:2007-04-26  
hibernate出现的问题实际上是关系数据库和面向对象技术的矛盾问题。

关系数据库和面向对象技术之间的矛盾是对立统一的,他们之间有一些共性,所以hibernate这种orm框架能很好的利用这一点,这也是hibernate能够广泛应用的一个根本要素。

但是它们之间又有很大的差异性,比如说把一个对象持久化到数据库,实际上只是保持了对象的静态要素(属性),而对象的动态要素(方法)在关系数据库中是无法体现出来的。

因为orm框架这种天生的缺陷导致它不能解决实际应用的所有持久化要求。即使从设计开始就完全按照面向对象进行设计也是无法避免这些问题的,只能使问题减少而已。
0 请登录后投票
   发表时间:2007-04-26  
我简单讲一些hibernate解决不了或者是存在性能问题的一些地方:
1.对未确定的表的操作。这些表可能是由用户在界面制定或者是通过配置文件制定。就是说同一个功能每次操作的表都有可能是不同的;
2.update table1 set colume1=? where id>1000 等类似问题;
3.需要对一个大数据量(超过一千万)的表每个记录做循环计算时候;
4.需要做复杂的关联统计等;
......

当然有些问题hibernate可以用数据库方言来做,但始终不是很完美的。

0 请登录后投票
   发表时间:2007-04-26  
1.未确定的表就是指即使在运行的时候也还是不能确定的表。比如你要把一张表的数据导出成xml文件,相关的映射方式在保存在配置文件中的。就是在运行的时候,这次你导出的是a表,下次运行导出的可能就是C表。永远不能确定使用的是哪张表,也不可能确定是哪个类了。除非动态生产class,动态加载。
用jdbc根本不用hard coded每个相关表的细节。就是操作表的sql是根据配置文件动态产生的。所以新增加一个字段或者少一个字段,甚至换表都只需要修改配置文件就可以了。根本不用改代码。

2.实际应用中,有需要对两张千万级别的表所有记录的某个类似属性进行比对,得出比对统计结果。
jdbc绝对没有问题。不知道Hibernate怎么实现,难道把所有数据都缓存吗?还是用什么方法?

0 请登录后投票
   发表时间:2007-04-26  
林秋枫 写道
1.未确定的表就是指即使在运行的时候也还是不能确定的表。比如你要把一张表的数据导出成xml文件,相关的映射方式在保存在配置文件中的。就是在运行的时候,这次你导出的是a表,下次运行导出的可能就是C表。永远不能确定使用的是哪张表,也不可能确定是哪个类了。除非动态生产class,动态加载。
用jdbc根本不用hard coded每个相关表的细节。就是操作表的sql是根据配置文件动态产生的。所以新增加一个字段或者少一个字段,甚至换表都只需要修改配置文件就可以了。根本不用改代码。

2.实际应用中,有需要对两张千万级别的表所有记录的某个类似属性进行比对,得出比对统计结果。
jdbc绝对没有问题。不知道Hibernate怎么实现,难道把所有数据都缓存吗?还是用什么方法?



具体的例子阿。。。等着你的例子呢。。。。
0 请登录后投票
   发表时间:2007-04-26  
林秋枫 写道
2.update table1 set colume1=? where id>1000 等类似问题;



这个不行吗?
0 请登录后投票
   发表时间:2007-04-27  
林秋枫 写道
我简单讲一些hibernate解决不了或者是存在性能问题的一些地方:
1.对未确定的表的操作。这些表可能是由用户在界面制定或者是通过配置文件制定。就是说同一个功能每次操作的表都有可能是不同的;
2.update table1 set colume1=? where id>1000 等类似问题;
3.需要对一个大数据量(超过一千万)的表每个记录做循环计算时候;
4.需要做复杂的关联统计等;
......

当然有些问题hibernate可以用数据库方言来做,但始终不是很完美的。



你用过hibernate吗,有些问题可以用hibernate的hql来完成,实在不行可以用本地sql,并且可以返回对象化的结果,难道你用jdbc特定数据库的sql来做就很优雅吗?可以说你的所有问题hibernate都可以完成。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics