有人用过iBATIS吗说说

有人用过iBATIS吗说说

听说不错,在JSPTW可以看到相关的讨论

iBATIS DB Layer 不能算是一 O/R mapping
不^他可以化 DAO 的工作
可以算是 SQL Mapping ...

他的^念很
可以下d iBATIS 的 jPetstore 作 sample code W
最重要的是 com.ibatis.jpetstore.persistence.*
你可以看到 sql/*.xml 就是 sql mapping
蔚 mapping sql ^念 堕_l及So是一件很p的事情
而他的 MVC Framework 是裼 struts
可以作基本教材W jsp/servlet MVC _l

另外, hibernate 是完全的 O/R mapping
你可以看一下 Clinton Begin ( iBATIS DB 作者 )所做的u
http://sourceforge.net/forum/message.php?msg_id=2141106
@句, 也是我最喜gζ渌 勰 xxx 和 yyy 比^的人 所f的
In the end the choice is yours and nobody can tell you what the right one is,
Trust only yourself, draw your own conclusions and do lots of testing!

好贴阿,jakarta99 你好不公平!

我转了!

to robbin ~

你把 jsptw 版主 morchory ( browser ) 和我 jini (99% jakarta)搞混了
我只是他的一小手下. jsptw opensource 版主 :p

阿,我要晕了,我在Hibernate中文论坛上好像看过他用这个logo来着,然后就搞混了。

我从认识ibatis的db layer还是从去年年初开始的(它加入sourceforge也就是今年五六月份吧),当时是关注jpetstore认识到的,现在在项目中也是大量使用了ibatis的 db layer,感觉还是相当不错的,无论是开发效率还是运行效率都是相当的高,我也用过OJB(实现了真正的OR mapping),我感觉各有千秋,如果是比较大的项目(一般用比较重量级的数据库),ibatis还是比较占有优势,特别是用惯了SQL的朋友,如果是用mysql等轻量级的数据库,我觉得还是真正实现OR mapping的数据库组件更方便一些,借助OR mapping组件可以实现一些在这些小型数据库中不支持的功能。

To: ahan

能否多谈谈关于的ibatis的话题??我很有兴趣!!!

高度关注,请大家不吝惕教!

最近使用了iBATIS,感到在执行效率上不是令人十分满意,在大数据量做分页时,表现十分明显。比之以前的JavaBean开发的相同功能的执行速度上慢很多。可能是我用的有问题?希望各位朋友帮助分析一下。

to robbin
ibatis的网站
www.ibatis.com上面可以找到很好的文档,再加上有非常不错的例子,所以使用是相当的简单。
sourceforge上面的讨论
https://sourceforge.net/forum/forum.php?forum_id=206693

ibatis大体上可以分为两个部分:SQL Maps + Data Access Objects
我现在的项目中都用到了,它提供的jpetstore就使用了db layer,可以参考它的实现方式。
不过我觉得jpetstore的db layer实现方式还不是太好,至少它的业务逻辑层和dao层没有明显区分,在实现比较大的项目的时候造成了程序的混乱,如果没有一个良好的模式来实现db layer 的时候,确实会造成效率的低下,有了良好的架构,速度确实很快(特别是SQL Maps + Data Access Objects <DaoManager>都使用的情况)
BO层的设计已经不是什么新鲜的了,但我觉得它确实可以很好的和DaoManager结合起来,通过DaoManager->SQL map->jdbc
它的两个核心的配置文件:dao.xml+SqlMapConfig.xml
通过灵活的配置文件的组合可以实现数据库不同的访问组合
比如:一个dao.xml可以对应多个SqlMapConfig.xml
一个dao.xml可对应一个数据库,多个dao.xml就可以访问多个数据库了(它的petstore就提供了演示distributed功能的样例是oracle+ms sql)
它的SqlMapConfig.xml中可配置sql-map resource,就是配置你具体的sql语句的xml文件。
它的sqlMap提供很多方法来访问数据库,直接返回你想要的结果

***************************
DAO中的一个供分页查询的方法
***************************
......

SqlMap sqlMap = getSqlMapFromLocalTransaction();//取到当前sqlmap对象
List list=sqlMap.executeQueryForList("你的MappedStatement文件中sql语句的名称", object("你可以通过这个object传一些查询条件"),skipResults,maxResults);

...

有了良好的设计模式,它可以和struts完美结合在一起,无论是效率还是清晰型上,都非常令人满意的

to henryxlx
大数据量的分页是一个老问题了,它的效率瓶颈不单是数据库访问层的问题啊,它跟你的实现思想是密切相关的,比如你一次在客户端放上万条数据,那么数据库访问层再好的实现也是无济于事的,所以每次只在客户端放客户看到的数据(一般100条以下),每次分页的时候再读取另外的数据过来,(参见上实现的例子),另外用url连接的方式到下一页而不是重新提交,然后做cache处理(ibatis可以灵活方便的配置cache),ibatis的数据库连接做静态变量处理,这样只读取一次数据库,这样应该够快了吧


十分感谢ahan兄,我想就这个问题我可能没说清楚。实际上我是利用ibatis提供的分页机制来进行处理。而我在页面上每次只请求显示不到10条记录,我采用的cache是LRU,每次显示数据都要等待一两秒,我也在怀疑是否是cache上设置的问题,不过目前对cache策略的使用还没有达到一个满意的程度。


一两秒确实不可思议

我觉得可能是使用ibatis的模式没有设计好,是不是每次请求都要去连接一次数据库啊?我使用了dao+sql map,重新设计了它的使用模式,也没有用catche,不过用了jsptags上的一个分页组件,同事都说这是他们见到过的最快的分页.@_$

to ahan
我使用的也是dao+sqlmap,从新设计使用模式是指什么意思?
jsptags上的一个分页组件是Sourceforge上的吗?