<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    resultSetType 的可選值有: ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVE
    1)
    TYPE_FORWARD_ONLY是默認(rèn)值, 僅支持結(jié)果集forward ,不支持滾動(dòng),也不是 SENSITIVE的
    2)
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    支持結(jié)果集backforwardlastfirst 等操作,對(duì)其它session對(duì)數(shù)據(jù)庫中數(shù)據(jù)做出的更改是不敏感的
    原因:JDBC對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢executeQuery時(shí),數(shù)據(jù)庫會(huì)創(chuàng)建查詢結(jié)果的cache和cursor,如下面sql:
    ??? select name,id from foo
    ??? 用jdbc執(zhí)行上面的sql語句時(shí),數(shù)據(jù)庫會(huì)把foo表所有記錄的name和id字段緩存到cache中,之后cache和真正的數(shù)據(jù)庫數(shù)據(jù)文件沒有任何聯(lián)系了,foo表發(fā)生的改變?cè)诓樵兺瓿珊蟛粫?huì)自動(dòng)同步到cache上去,因此TYPE_SCROLL_INSENSITIVE對(duì)選擇數(shù)據(jù)做出的更改是不敏 感,不可見。
    3)ResultSet.TYPE_SCROLL_SENSITIVE
    支持結(jié)果集backforwardlastfirst 等操作,對(duì)其它session對(duì)數(shù)據(jù)庫中數(shù)據(jù)做出的更改是敏感的,即其他session 修改了數(shù)據(jù)庫中的數(shù)據(jù),會(huì)反映到本結(jié)果集中
    上面的select name,id from foo語句用TYPE_SCROLL_SENSITIVE的Statement來執(zhí)行,會(huì)轉(zhuǎn)化成以下的sql語句:
    ??? select rowid from foo
    ??? 數(shù)據(jù)庫這時(shí)候是把foo表所有記錄的rowid緩存到cache中,用戶代碼在fetch記錄時(shí),再繼續(xù)做以下查詢:
    ??? select name,id from foo where rowid=?
    ??? 因此這時(shí)候發(fā)生的查詢是實(shí)時(shí)從真正的數(shù)據(jù)庫數(shù)據(jù)文件中取,因此對(duì)期間發(fā)生的數(shù)據(jù)更改是可見的,敏感的。但是這種可見性僅限于update操作,而 insert和delete同樣是不可見的。因?yàn)槿绻樵儼l(fā)生在insert之前,insert生成的rowid并不會(huì)反應(yīng)在cache中的rowid結(jié)果集上。在一個(gè)記錄的rowid已經(jīng)緩存到cache中,這時(shí)候被刪除了,但一般數(shù)據(jù)庫的刪除是標(biāo)記刪除,也就是說rowid對(duì)應(yīng)那行記錄并沒有真正從數(shù) 據(jù)庫文件中抹去,一般是可以再次取到記錄的。

    結(jié)論:是否SENSITIVE與fetchsize沒有什么關(guān)系。是否SENSITIVE是告訴數(shù)據(jù)庫如何作查詢的緩存。fetchsize是客戶端jdbc的設(shè)置。

    另外oracle的
    fetchsize默認(rèn)為10
    stmt.setFetchSize(0)時(shí)stmt.getFetchSize()=1
    0
    stmt.setFetchSize(1)時(shí)stmt.getFetchSize()=1

    另外如果查詢的sql復(fù)雜時(shí),我發(fā)現(xiàn)就算設(shè)為
    ResultSet.TYPE_SCROLL_SENSITIVE也不起作用,如
    select t.*? from test t left join testp p on t.pid=p.id where p.title like '%國%',在運(yùn)行中修改title的值,發(fā)現(xiàn)仍然可以取到。是否可以理解為SENSITIVE只對(duì)查詢的主表起作用。

    摘自:
    http://www.javaeye.com/topic/128636
    http://www.javaeye.com/topic/560109
    http://www.javaeye.com/topic/418604
    主站蜘蛛池模板: 在线观看免费黄网站| 成人免费激情视频| 亚洲欧洲在线观看| 免费人成视频在线| jizz免费观看视频| 亚洲免费电影网站| 亚洲精品麻豆av| 成人免费黄色网址| 国产精品美女久久久免费| 亚洲人色大成年网站在线观看| 性做久久久久免费观看| 久久永久免费人妻精品| 理论亚洲区美一区二区三区| 亚洲欧洲免费视频| 亚洲AV成人潮喷综合网| 日韩在线播放全免费| 国产免费人成视频在线播放播| 亚洲免费电影网站| 亚洲精品无码不卡在线播放HE| 国产成在线观看免费视频| 中文无码日韩欧免费视频| 亚洲AV无码一区二区三区牛牛| 亚洲人成精品久久久久| 日本特黄特色免费大片| 91精品成人免费国产片| 久久av免费天堂小草播放| 亚洲乱码中文字幕在线| 亚洲视频免费观看| 亚洲精品卡2卡3卡4卡5卡区| 四虎成人精品在永久免费| 99久久精品日本一区二区免费| 你是我的城池营垒免费观看完整版 | 国产成人久久AV免费| 日本一区二区在线免费观看| 亚洲中文字幕久久精品无码2021| 亚洲免费人成在线视频观看| 性做久久久久免费看| 毛片a级毛片免费观看免下载 | fc2成年免费共享视频网站| 亚洲熟妇久久精品| 亚洲国产精品xo在线观看|