博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于hibernate的das实现研究(2)
阅读量:4192 次
发布时间:2019-05-26

本文共 1084 字,大约阅读时间需要 3 分钟。

最近做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中指定

        true

当然,不用外部connection的情况下,这个配置与否是没有关系的。

 

转载地址:http://khaoi.baihongyu.com/

你可能感兴趣的文章
科学育儿书籍
查看>>
emacs 学习
查看>>
cygwin
查看>>
内核页表
查看>>
github
查看>>
sublime
查看>>
linux 内存函数
查看>>
sdcardfs
查看>>
csdn 代码拷贝编译错误解决方法
查看>>
软件开发经典书籍
查看>>
spinlock原理
查看>>
dup源码分析
查看>>
try_to_wakeup 选择其他核运行逻辑
查看>>
2021-03-28
查看>>
rtlinux
查看>>
OPPO Reno3系列旗舰官宣:骁龙765G+正反双曲面设计
查看>>
一加8系列新机有望亮相CES 2020:全系支持5G网络
查看>>
称对方攀附使用近似商标 “汽车之家”起诉索赔500万
查看>>
三星突然发布Galaxy S10 Lite和Note 10 Lite:有不同也有所同
查看>>
小米10/10 Pro详细规格曝光:120Hz高刷新率屏+66W超级闪充
查看>>