锁定老帖子 主题:Hibernate的优化:分页
精华帖 (6) :: 良好帖 (14) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-27
引用 sybase和MsSql有些渊源,貌似当初微软和sybase合作,后来出来了MsSql。jtds驱动支持这个两个数据库,sybase的hibernate方言里有这么一句注释: /** * An SQL dialect compatible with Sybase and MS SQL Server. * @author Gavin King */ 嗯 在2000的时候他们还很像。 但后来区别就越来越大。到了05以后就可以把他们当作完全不同的数据库来学了。 |
|
返回顶楼 | |
发表时间:2010-07-27
icefishc 写道 my_corner 写道 魔力猫咪 写道 出现这种情况是因为Hibernate还一直沿用SQLServer2000时代的Dialect,没有为2005、2008编写新的Dialect。
可能因为Java阵营天生和微软犯冲吧。对对方的支持都相对差一些。 即便是沿用了SQLServer2000时代的Dialect也说不过去。不去看源代码,只看生成的sql,至少不能查询第几条就select top XXX 吧?只是一个top,在数据库层面来看,无论如何都是做不了分页的。 怀疑sqlserver 在2000时 还不支持在sub query中用top. 那时候又没有分析函数。 也没有什么太好的办法,除非用临时表。而临时表又有很多限制,不能在事物中使用。 2000时代是不支持rownumber的。SQLServer2000的JDBC驱动也是问题多多。直到2005驱动才得到改善,不过很多人还是更喜欢JTDS驱动。 |
|
返回顶楼 | |
发表时间:2010-07-27
感觉sybase现在做得越来越不行了,我公司项目用ibatis,分页必须写一个存储过程来搞,sybase15.0里还有很多sql上的bug,一个标准的sql在oracle和mssql里都正常,但是跑到sybase里往往死活不行
|
|
返回顶楼 | |
发表时间:2010-07-27
最后修改:2010-07-27
liujun999999 写道 感觉sybase现在做得越来越不行了,我公司项目用ibatis,分页必须写一个存储过程来搞,sybase15.0里还有很多sql上的bug,一个标准的sql在oracle和mssql里都正常,但是跑到sybase里往往死活不行
标准sql不能跑只能说对标准支持不好。 说它是bug就有些冤枉它了。 Oracle和mssql server也不是所有的标准sql都支持 |
|
返回顶楼 | |
发表时间:2010-07-27
row_number() over 很容易处理分页的,不知道为啥那么多视而不见。
|
|
返回顶楼 | |
发表时间:2010-07-27
sohuexe 写道 row_number() over 很容易处理分页的,不知道为啥那么多视而不见。
不是视而不见,2000的时候没有这个玩意,2005出来之后好多人不会用因此还沿用以前的写法。 |
|
返回顶楼 | |
发表时间:2010-07-27
呵呵,楼主也发现这个问题了啊!
前面我们做项目也遇到这个问题。只能说开源的hibernate对微软的产品支持做的很水吧。 |
|
返回顶楼 | |
发表时间:2010-07-27
猪圈羊圈 写道 呵呵,楼主也发现这个问题了啊!
前面我们做项目也遇到这个问题。只能说开源的hibernate对微软的产品支持做的很水吧。 也许是认为sqlserver 不应和java配对。 |
|
返回顶楼 | |
发表时间:2010-07-27
java一般都选择mysql或者oracle吧
|
|
返回顶楼 | |
发表时间:2010-07-27
Sybase 12.5不支持物理分页,只能写存储过程处理,反映到Hibernate上就是整个查询代码都走样了,难写难看。
|
|
返回顶楼 | |