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实现插入数据的时候,不立马显示!!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑每次开机后都要点确定进入系统,怎么直
- 下一篇: hibernate在分层架构中修改数据(