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中的缓存数据。
还有不足的地方还请各位大神多多指点指点,本人的总结就这些了!!!
相关文章
- 解决Oracle中删除一条数据的方法(oracle删除一条数据)
- 利用Oracle数据库去除重复数据(oracle去重复数据)
- 恢复 Oracle 表丢失数据的终极方法(oracle表丢失数据)
- Oracle游标快速取值技巧,轻松实现高效数据检索(oracle游标取值)
- 如何避免Oracle数据丢失(oracle数据丢失)
- 如何使用Oracle获取前几行数据?(oracle取前几条数据)
- 使用Oracle过滤时间,轻松实现数据精准查询(oracle过滤时间)
- 的使用深入浅出 Oracle:如何使用游标查看数据(oracle查看游标)
- Oracle证书考试费用一览:多少钱?(oracle证书多少钱)
- 如何在Oracle中截取日期,获取年月日?(oracle截取年月日)
- Oracle金融:打造高效金融系统(oracle金融)
- 从Oracle迁移到Elasticsearch:如何转移您的数据?(oracle到es)
- Oracle数据库数据彻底删除方法实践(oracle彻底删除)
- Oracle专业培训:走向学习之路(oracle专业培训)
- Oracle 数据库管理关闭连接(oracle关闭连接关闭)
- Oracle实现数据最优化的关键字定义(oracle 关键字定义)
- 快速实现Oracle中全表数据的删除(oracle全表删除吗)
- ODBC在Oracle上的安装指南(odbc安装oracle)
- C语言与Oracle线程池轻松实现性能提升(c oracle 线程池)
- 如何利用CMD查看Oracle信息(cmd怎么查oracle)
- 数据深入浅出用Oracle修改单行数据(oracle 修改一行)
- Oracle代理进程构建稳健的数据存储(oracle代理进程)
- Oracle数据库更新指令简介(oracle中更新命令)
- 使用Oracle数据库实现区间比较(oracle中区间比较)
- Oracle中实现对列数据求和的方法(oracle中列数据求和)
- 库Oracle双行数据库一步到位轻松部署(oracle 两行数据)
- Oracle中计算两日期差的简便方法(oracle 两日期差)
- Oracle SQL模板精准掌控数据库(oracle sql模板)