论坛首页 Java企业应用论坛

Hibernate的优化:分页

浏览 32525 次
精华帖 (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以后就可以把他们当作完全不同的数据库来学了。
0 请登录后投票
   发表时间: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驱动。
0 请登录后投票
   发表时间:2010-07-27  
感觉sybase现在做得越来越不行了,我公司项目用ibatis,分页必须写一个存储过程来搞,sybase15.0里还有很多sql上的bug,一个标准的sql在oracle和mssql里都正常,但是跑到sybase里往往死活不行
0 请登录后投票
   发表时间:2010-07-27   最后修改:2010-07-27
liujun999999 写道
感觉sybase现在做得越来越不行了,我公司项目用ibatis,分页必须写一个存储过程来搞,sybase15.0里还有很多sql上的bug,一个标准的sql在oracle和mssql里都正常,但是跑到sybase里往往死活不行

标准sql不能跑只能说对标准支持不好。 说它是bug就有些冤枉它了。 Oracle和mssql server也不是所有的标准sql都支持
0 请登录后投票
   发表时间:2010-07-27  
row_number() over 很容易处理分页的,不知道为啥那么多视而不见。
0 请登录后投票
   发表时间:2010-07-27  
sohuexe 写道
row_number() over 很容易处理分页的,不知道为啥那么多视而不见。

不是视而不见,2000的时候没有这个玩意,2005出来之后好多人不会用因此还沿用以前的写法。
0 请登录后投票
   发表时间:2010-07-27  
呵呵,楼主也发现这个问题了啊!
前面我们做项目也遇到这个问题。只能说开源的hibernate对微软的产品支持做的很水吧。
0 请登录后投票
   发表时间:2010-07-27  
猪圈羊圈 写道
呵呵,楼主也发现这个问题了啊!
前面我们做项目也遇到这个问题。只能说开源的hibernate对微软的产品支持做的很水吧。

也许是认为sqlserver 不应和java配对。
1 请登录后投票
   发表时间:2010-07-27  
java一般都选择mysql或者oracle吧
0 请登录后投票
   发表时间:2010-07-27  
Sybase 12.5不支持物理分页,只能写存储过程处理,反映到Hibernate上就是整个查询代码都走样了,难写难看。
0 请登录后投票
论坛首页 Java企业应用版

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