谈一下Hibernate令人爽的地方
谈谈Hibernate令人爽的地方
由于工作原因,现在将ORM从熟悉的Hibernate转到IBatis
最近组里要把过去的一个项目从ms sql转到oracle下,原本在HB下很轻松的事情
结果现在要一个模块一个模块的改,而且出现的问题多多,改起来超级麻烦
发现IBatis在持久层为我们做的少之又少,带来的是一堆堆 XML
改的时候IB不给输出执行时的SQL语句,出错基本不知道是什么地方的问题,只能一点点摸索(比如断点),要去XML中一个一个的对比,粘出去到ORACLE下执行语句.
一个小项目动辄几十个XML用来映射SQL,调程序必须在 SQL/CODE之间来回切换,谁知道是不是SQL在ORACLE下出错了,人写的么,都会有一点点毛病,
比如:
这样的语句在SQL下可以正常运行,跑到ORACLE就会出错,ibatis应该报SQL没有正常结束
像这样烦人的问题每天都遇到一堆,因为你不知道以前好用的SQL在什么时候什么地方会出错,而且还把异常封状的那么难看
再说说性能问题
总是看人家说hibernate在批量操作的时候很慢(对比JDBC),其实完全是句废话,任何ORM封装JDBC都要有性能开销,不想要性能开销的可以用JDBC嘛,而且HB提供方法可以很容易的局部绕过HB API,直接使用JDBC
通常大家都会说这样一个例子,HB在update 1W以上数据是的性能,其实可以通过setBatch来解决
作为ORM框架,应该为我们带来开发.管理上的效率而不是负担
一点点个人看法,不喜欢的马上扔砖头
这时候,使用XML来写代码了.一种代码换另一种代码罢了.
不明白,做报表干嘛要用Hibernate?
大家都那么喜欢看SQL?偶每次看Hibernate只需要看它打印出来的SQL数目是不是我预计中的数目就差不多了.干嘛非得一个劲地扣语句?要看就从from xxxx那一节看.
呵呵,我基本不看HB生成的SQL,至少HB不会在SQL这个曾面上出错
这位高手麻烦你从 骨头的骨头来给我将一讲IB,把拥有70多个XML的项目移植数据库的 好方案
呵呵,我基本不看HB生成的SQL,至少HB不会在SQL这个曾面上出错
这位高手麻烦你从 骨头的骨头来给我将一讲IB,把拥有70多个XML的项目移植数据库的 好方案
不是ibatis有错。
是你们团队的数据库能力十分菜,ibatis的能力十二分菜,这种情况下还选ibatis,自然是以卵去碰石头,只能菜上加菜。谁告诉你Ibatsi是ORM工具,ibatis的定位本身就是SQL mapping,而不是orm。
天下哪有那么完美的数据库迁移方案,这句HQL在mysql和postgres下表现就不一样,
from User u group by user.name,
如果是大型项目,马上得让你把hibernate骂得狗血淋头。
呵呵,我基本不看HB生成的SQL,至少HB不会在SQL这个曾面上出错
这位高手麻烦你从 骨头的骨头来给我将一讲IB,把拥有70多个XML的项目移植数据库的 好方案
ibatis用不着我来讲,您随便google一下就行了。
您要好方案,我的建议是:得,您就改吧。
在抱怨框架之前,先把自己的问题解决掉。
由于工作原因,现在将ORM从熟悉的Hibernate转到IBatis
最近组里要把过去的一个项目从ms sql转到oracle下,原本在HB下很轻松的事情
结果现在要一个模块一个模块的改,而且出现的问题多多,改起来超级麻烦
发现IBatis在持久层为我们做的少之又少,带来的是一堆堆 XML
改的时候IB不给输出执行时的SQL语句,出错基本不知道是什么地方的问题,只能一点点摸索(比如断点),要去XML中一个一个的对比,粘出去到ORACLE下执行语句.
一个小项目动辄几十个XML用来映射SQL,调程序必须在 SQL/CODE之间来回切换,谁知道是不是SQL在ORACLE下出错了,人写的么,都会有一点点毛病,
比如:
select user.id,user.name form user_table as user where user.pass=#password#;
这样的语句在SQL下可以正常运行,跑到ORACLE就会出错,ibatis应该报SQL没有正常结束
像这样烦人的问题每天都遇到一堆,因为你不知道以前好用的SQL在什么时候什么地方会出错,而且还把异常封状的那么难看
再说说性能问题
总是看人家说hibernate在批量操作的时候很慢(对比JDBC),其实完全是句废话,任何ORM封装JDBC都要有性能开销,不想要性能开销的可以用JDBC嘛,而且HB提供方法可以很容易的局部绕过HB API,直接使用JDBC
. . . Connection conn=session.getConnection(); JDBC CODE ....
通常大家都会说这样一个例子,HB在update 1W以上数据是的性能,其实可以通过setBatch来解决
作为ORM框架,应该为我们带来开发.管理上的效率而不是负担
一点点个人看法,不喜欢的马上扔砖头
1 楼
carlosbdw
2007-07-25
用XML代替hibernate也是一种解决方案,有些框架不用写任何代码,就靠XML就可以建立起一个网站。
2 楼
withoutmewang
2007-07-25
log4j中设置为debug级别后,ibatis可以输出执行时的SQL语句,SQL很干净很清晰,而且连参数都给你输出了
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
3 楼
我想我是海
2007-07-26
carlosbdw 写道
用XML代替hibernate也是一种解决方案,有些框架不用写任何代码,就靠XML就可以建立起一个网站。
这时候,使用XML来写代码了.一种代码换另一种代码罢了.
4 楼
我想我是海
2007-07-26
withoutmewang 写道
log4j中设置为debug级别后,ibatis可以输出执行时的SQL语句,SQL很干净很清晰,而且连参数都给你输出了
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
不明白,做报表干嘛要用Hibernate?
大家都那么喜欢看SQL?偶每次看Hibernate只需要看它打印出来的SQL数目是不是我预计中的数目就差不多了.干嘛非得一个劲地扣语句?要看就从from xxxx那一节看.
5 楼
yh_private
2007-07-26
withoutmewang 写道
log4j中设置为debug级别后,ibatis可以输出执行时的SQL语句,SQL很干净很清晰,而且连参数都给你输出了
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
呵呵,我基本不看HB生成的SQL,至少HB不会在SQL这个曾面上出错
这位高手麻烦你从 骨头的骨头来给我将一讲IB,把拥有70多个XML的项目移植数据库的 好方案
6 楼
yananay
2007-07-26
连 ibatis 怎么出来log 都没弄明白.....
说什么好呢?
说什么好呢?
7 楼
ray_linn
2007-07-26
yh_private 写道
withoutmewang 写道
log4j中设置为debug级别后,ibatis可以输出执行时的SQL语句,SQL很干净很清晰,而且连参数都给你输出了
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
呵呵,我基本不看HB生成的SQL,至少HB不会在SQL这个曾面上出错
这位高手麻烦你从 骨头的骨头来给我将一讲IB,把拥有70多个XML的项目移植数据库的 好方案
不是ibatis有错。
是你们团队的数据库能力十分菜,ibatis的能力十二分菜,这种情况下还选ibatis,自然是以卵去碰石头,只能菜上加菜。谁告诉你Ibatsi是ORM工具,ibatis的定位本身就是SQL mapping,而不是orm。
天下哪有那么完美的数据库迁移方案,这句HQL在mysql和postgres下表现就不一样,
from User u group by user.name,
如果是大型项目,马上得让你把hibernate骂得狗血淋头。
8 楼
withoutmewang
2007-07-26
yh_private 写道
withoutmewang 写道
log4j中设置为debug级别后,ibatis可以输出执行时的SQL语句,SQL很干净很清晰,而且连参数都给你输出了
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
hibernate生成的SQL你看的不累吗?
hibernate的性能问题,不仅仅体现在批量操作的问题上吧?hibernate做报表的时候,那滋味你觉得很好吗?
呵呵,我基本不看HB生成的SQL,至少HB不会在SQL这个曾面上出错
这位高手麻烦你从 骨头的骨头来给我将一讲IB,把拥有70多个XML的项目移植数据库的 好方案
ibatis用不着我来讲,您随便google一下就行了。
您要好方案,我的建议是:得,您就改吧。
在抱怨框架之前,先把自己的问题解决掉。
9 楼
liusong1220
2007-07-26
那是你还没遇到hibernate让你痛苦的地方。
IBatis 只是 SQL Mapping 工具,用起来还是挺灵活的。
IBatis 只是 SQL Mapping 工具,用起来还是挺灵活的。
10 楼
zhkchi
2007-07-27
题目和内容 严重脱离了,呵呵。
ibatis肯定可以看到log的,而且一定比hb的要好看很多。
如果你2个都不熟悉的话,ibatis无疑更适合你,hibernate太灵活了,导致不好用。ibatis就容易上手很多很多。。。当然了,一般也会满足你得要求,看你熟悉的层度了。
ibatis肯定可以看到log的,而且一定比hb的要好看很多。
如果你2个都不熟悉的话,ibatis无疑更适合你,hibernate太灵活了,导致不好用。ibatis就容易上手很多很多。。。当然了,一般也会满足你得要求,看你熟悉的层度了。