精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-05-31
zgd 写道 我想问问强烈建议ibatis的各位的分页是怎么处理的
是自己手工写分页sql 还是用ibatis里面的 rs.absolute(skipResults); 性能呢 这有什么难的? 对于小数据量,这个足以工作。 import com.ibatis.common.util.PaginatedList; ....... PaginatedList list = this.getSqlMapClientTemplate();.queryForPaginatedList("Example.getAll", null, 2);; while (true); { Iterator listIterator = list.iterator();; while (listIterator.hasNext();); { System.out.println( ((CD);listIterator.next(););.getId(););; } if( list.isNextPageAvailable();); { System.out.println("page..."+list.getPageIndex(););; list.nextPage();; } else break; } 对于大数据量,用来做分页的store procedure多了去了,此外某些数据库(SQL 2005, Oracle)还提供了提供对分页的特殊支持!! 例如对于mySQL <select id="getByPage" parameterClass="java.util.Map" resultMap="result" cacheModel="Cache"> SELECT * FROM cdbean LIMIT #start#,#offset# </select> 在某些复杂应用,例如大数据量的多表级联查询,只有Store Procedure可以胜任。 使用Ibatis的目的是不是和数据库分离,而是更贴近数据库,而数据库独有的方式来解决问题。Ibatis的挑战是,你的队伍里不需要有Ibatis的专家,但要有数据库的专家。 |
|
返回顶楼 | |
发表时间:2006-05-31
我们的项目目前倾向于直接从数据库中提取XML,Hibernate支持的倒是还可以,但是性能实在是。。。。。还有Bug。。。。。
IBatis对XML Mapping的支持基本上是Nothing,不能得到嵌套的结构,但是性能真是好啊,复杂结构大数据量的查询方面和Hibernate不在一个数量级上。考虑是不是自己改一下Ibatis ing... |
|
返回顶楼 | |
发表时间:2006-05-31
Artkai 写道 个人感觉最好自己手写分页sql,iBatis的这种处理方法性能上肯定会有影响的,如果iBatis能像hibernate那样自动判断不同的数据库封装不同的分页sql就好了.... IBatis的本意就是把这个工作交给熟悉DB的人,它提供了一个薄薄的界面,把程序员和数据库管理员分而治之,(除了少数人,大部人都是知晓程序或者数据库二者之一)。 对于SQL 2000和SQL2005,很容易写出不同的Page Store Procudure,而且不必对Java代码做任何修改。甚至对于某些legacy的DB,也没有什么困难。 |
|
返回顶楼 | |
发表时间:2006-06-01
1)搂主既然是做产品,最好用 Hibernate,数据库移植很方便,开发速度也快。
2)如果关系数据库基础扎实,并且熟悉面对对象编程(即使java不是很熟悉),那么 Hibernate 学起来并不难,而且可以很快应用到项目中。 3)至于性能方面的担忧是多余的,最好是测试了之后再来考虑优化,况且 Hibernate 也支持存储过程,或者与 iBatis 结合使用。有一种说法是 80% 的性能开销在 20% 的代码上,性能优化应该是在找出了性能瓶颈之后再来进行。 4)如果单单使用 iBatis 的话,入门可能要快些,但是 SQL 编码量要大些。 我以前用 Powerbuilder 和 SQL 存储过程开发,现在用 Hibernate 两个月了,开发起来还比较顺手。 5)其实开发的难度很多是由于业务知识上的欠缺造成的,而使用 Hibernate 带来的好处是能让您从数据库存储逻辑中解放出来,关注领域类的设计和业务逻辑的实现。 6)补充一条,用 HQL 一样可以实现复杂的多表关联查询。 |
|
返回顶楼 | |
发表时间:2006-06-02
请使用hibernte不到二年的朋友不要在这里误导别人。我可以直言不讳的说,hibernate非常差劲。不要被他那可爱的 ORM 诱惑了,否则将来你必受冲动的惩罚。
|
|
返回顶楼 | |
发表时间:2006-06-02
shanghai 写道 请使用hibernte不到二年的朋友不要在这里误导别人。我可以直言不讳的说,hibernate非常差劲。不要被他那可爱的 ORM 诱惑了,否则将来你必受冲动的惩罚。
能否举出其“非常差劲”的应用例子,这里向您讨教,谢谢! |
|
返回顶楼 | |
发表时间:2006-06-02
最近为了修改Hibernate的XML Mapping问题,粗粗看了一下Hibernate的代码,发现Hibernate在对Join的支持部分所做的冗余操作很多,吃内存也吃的比较厉害。我做了一个测试,100 x 100 x 100的主从从结构,用Join返回一个主表对象(连同子表一共10000条记录),时间大约在10-14s。事实上SQL返回查询结果只需要2s。
用IBatis的话,同样的测试,返回结果的时间是2.5-2.8s,还是很理想的。 虽说绝大多数情况下,不会出现这样的查询。不过这个测试足以说明Hibernate映射代码的性能是不高的,只是小数据量不太复杂的对象结构下性能损失不明显而已。 题外话: Ibatis对HashMap结果的支持还是令人满意的。但是对XML的支持比较烂。这两天在看它的源代码,基本上已经搞懂了它的处理方式。事实上,IBatis目前尚不支持对Join结果生成嵌套的XML,不过修改起来也不是太大的问题。 |
|
返回顶楼 | |
发表时间:2006-06-02
如果是新项目,还是用 Hibernate 为好,具体原因《深入浅出 Hibernate》中写得很详细。如果发现性能瓶颈,可以用 Hibernate 3 中新引入的自定义持久化实现机制,或者存储过程来解决。
|
|
返回顶楼 | |
发表时间:2006-06-03
shanghai 写道 请使用hibernte不到二年的朋友不要在这里误导别人。我可以直言不讳的说,hibernate非常差劲。不要被他那可爱的 ORM 诱惑了,否则将来你必受冲动的惩罚。
没有论据的论点如何说服别人 |
|
返回顶楼 | |
发表时间:2006-06-04
liuwangxia 写道 如果是新项目,还是用 Hibernate 为好,具体原因《深入浅出 Hibernate》中写得很详细。如果发现性能瓶颈,可以用 Hibernate 3 中新引入的自定义持久化实现机制,或者存储过程来解决。
在这种情况下它的ORM还有存在意义吗? |
|
返回顶楼 | |