基于hibernate的das实现研究(2)
来源:互联网 发布:js中shift 编辑:程序博客网 时间:2024/06/11 09:48
最近做SDO的 DAS实现,用到了Hibernate的scrollableResult功能,记录下code分析结果,备用:
1)分页功能
Query q = session.createQuery("from Cat as c");
q.setFirstResult(200);
q.setMaxResults(100);
List l = q.list();
分页和ScrollableResult是没有任何关系的,完全在API中体现。org.hbiernate.loader.Loader的第1543行如下:
if ( useLimit ) {
sql = dialect.getLimitString(
sql.trim(), //use of trim() here is ugly?
useOffset ? getFirstRow(selection) : 0,
getMaxOrLimit(selection, dialect)
);
}
也就是用不同的dialect来做分页。这个是很正常的考虑。难得的是hibenrate对不同数据库的 max值的设置也区别开了: 比如某种数据库的 maxResults表示 最多取多少条记录;而另外的数据库可能表示 最大的记录号。
2)ScrollableResult
在JDBC2.0中是这样定义的:
Statement stmt=con.getStatement("游标类型", "记录更新权限");
游标类型:
ResultSet.TYPE_FORWORD_ONLY:只可以向前移动
ResultSet.TYPE_SCROLL_INSENSITIVE:可卷动。但是不受其他用户对数据库更改的影响。
ResultSet.TYPE_SCROLL_SENSITIVE:可卷动。当其他用户更改数据库时这个记录也会改变。
记录更新权限:
ResultSet.CONCUR_READ_ONLY,只读
ResultSet.CONCUR_UPDATABLE,可更新
对于ScrollMode,hibernate默认使用ResultSet.TYPE_SCROLL_INSENSITIVE。当然你可以在API中指定你自己
想要的mode。
对于update priv,hibernate使用ResultSet.CONCUR_READ_ONLY,只读方式。
如果你使用的外部connection,必须在cfg.xml中指定
<property name="hibernate.jdbc.use_scrollable_resultset">true</property>
当然,不用外部connection的情况下,这个配置与否是没有关系的。
- 基于hibernate的das实现研究(2)
- 基于hibernate的das实现研究(2)
- 基于hibernate的das实现研究(2)
- 基于hibernate的das实现研究(1)
- 基于hibernate的das实现研究(3)
- 基于hibernate的das实现研究(4)
- 基于hibernate的das实现研究(4)
- 基于hibernate的das实现研究(3)
- 基于hibernate的das实现研究(1)
- 基于hibernate的das实现研究(4)
- 基于hibernate的das实现研究(3)
- 基于hibernate的das实现研究(1)
- SDO/DAS研究(2): SDO目标和技术特点
- 基于分库分表的Hibernate实现
- 基于hibernate缓存机制的查询性能优化研究
- 基于hibernate缓存机制的查询性能优化研究
- 基于Spring+Hibernate+DAO的hibernate的lazy的实现.
- 基于反射的Swing+Hibernate实现
- SQLDMO类的使用
- C#条形码
- td在IE7不能浏览的问题解决办法[转自51testing]
- Lesson One Excuse me. 对不起.
- JavaScript时钟间隔的问题~
- 基于hibernate的das实现研究(2)
- 我的明星
- 试着不逻辑的写文章
- 终于能够使用BLOG了
- 常用正则表达式集锦
- C# 截图
- Net水晶報表的使用
- Lesson Three Sorry,sir. 对不起,先生
- I will try my best to be a positive man, haha.