日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate+oracle+servlet实现插入数据的时候,不立马显示!!

發布時間:2023/12/3 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate+oracle+servlet实现插入数据的时候,不立马显示!! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

尊重原創!!!

???? 開發軟件:myeclipse 10+oracle 11g

???? 開發項目:租房系統

???? 開發人員:1111

???? 出現的問題:在前臺發布房屋信息的界面插入數據時,自動跳轉到查詢所有房屋信息的頁面,數據顯示不完整,本表的可以顯示,有外鍵的都顯示不出來,(比如,街道(Street)信息是一個單獨的表,在房屋信息表(House)里面引用的街道表的id,通過Street street=new Street(),street.getName()來獲取街道名字),運行完之后也不報錯,但是就是不顯示!!!

???? 直接上圖可能更詳細點;

??




???? 問題分析:

???????? 這種問題還是第一次見,自己初步分析:

1.可能是前臺通過jstl獲取數據的時候,字段顯示不對?

2.在servlet里面沒有把街道信息放在request作用域里面?

3.沒有提交(commit());

4.數據庫里面可能就沒有把街道信息添加進去!

??? 問題分析完之后那就開始一個一個的檢查,先看顯示房屋信息的界面,驗證分析1是否正確:

????


??? 仔細檢查之后發現排除分析1

???? 繼續在看分析2是否正確,


????? 發現我都放進作用域里面了,并且一塊轉發到了顯示的界面,有點納悶了,這又是為啥呢?

????? 既然分析二也排除掉,那就接著看分析3和分析4,她兩一塊看,先去數據庫里面看看添加上來了沒,數據庫里面沒有的話就是沒有commit,然后我就在數據庫里面查了一遍


???

?????????? 臥槽,數據倒是進來了,但是為什么不顯示呢?根據已有的思路都分析完了,還是不行咋整?靈機一動,去問問百度吧,也許能問出點啥來了!!

??? 好,說走咱就走,問了下百度,百度和我說了一堆廢話。。。。什么配置文件錯誤,映射文件有誤......靠天靠地不如靠自己,使勁用腦子在想解決方法,繼續分析:既然數據庫里面都有數據,前臺沒有數據?前臺頁面的其他記錄都是從數據庫里獲取的,不應該光這個獲取不到啊,重啟服務試試!!!

??? 重啟了下服務,上來前臺頁面看了下,.....顯示出來了,數據都顯示出來了,包括街道和房屋類型一個都沒少


難道是我服務的事?于是乎,繼續添加一條記錄試試看。趕緊添加完之后跳轉到顯示所有的頁面,奇詭的是其他的記錄都有,就是新添加的這條記錄沒有顯示出來。。。居然還是不行,既然還不行的話我就在DaoImpl里面把各個時期的值輸出來看看是哪里沒數據?



??? 有數據,包括新添加的也在里面,那就去看看Servlet里面的數據看看有沒有?


??? 沒辦法,也有數據,繼續在想哪里的原因,難道是hibernate緩沖的問題?(之前無意間看到hibernate的緩沖),那就按照緩沖來測試一下,先把session.close看看是否管用


??? 執行的時候報錯!session 是關閉的!!既然關閉了不行,那就試試flush(),與數據庫同步數據看看會怎么樣!


?? 報錯倒是不報錯,但是白搭,還是和之前一樣,那就在試試clear()看看怎么樣,過了2分鐘,測試完畢,還是一樣居然,圖就不上了!!!不能這樣亂測試了,在靜下來好好的分析一下哪里的問題!之前一直是在添加的DaoImpl里面測試session的clear()? flush()? close(),感覺不大對勁,既然是查詢不出來,那就得在查詢的方法里面清除session的緩沖,開始行動,我給添加的方法里面清空了一下session,用的是clear(),在查詢的里面用的是flush(),感覺這樣分析應該沒問題,讓查詢的數據和數據庫里面進行同步,就不信還不行?

????? 于是抱著試試的態度進行測試了一下,居然可以顯示出來了。解決了一晚上沒有解決掉的bug,終于解決掉了!!!所以總結一下session的clear()和flush的區別:

最簡單的理解就是:

??? session.flush()的作用就是將session的緩存中的數據與數據庫同步。

??? session.clear()的作用就是清除session中的緩存數據。

還有不足的地方還請各位大神多多指點指點,本人的總結就這些了!!!


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的hibernate+oracle+servlet实现插入数据的时候,不立马显示!!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。