当前位置:首页 > 开发 > 编程语言 > Hibernate > 正文

记一次hibernate无法取得jdbc插入数据的问题折腾

发表于: 2010-09-22   作者:酷的飞上天空   来源:转载   浏览:
摘要: 大概情况如下 前端:struts2+spring3+hibernate3 + mysql 主要用于取得数据库的数据显示在页面,含有少量的数据更新操作。 后端:jdbc + mysql 用于接收某客户端发来的数据(socket通信),并存入数据库,供前端显示。   问题: jdbc可以成功插入数据库,但前端无法取得jdbc插入的数据,而前端自己的更新操作均无问题。 经查看数据库

大概情况如下

前端:struts2+spring3+hibernate3 + mysql 主要用于取得数据库的数据显示在页面,含有少量的数据更新操作。

后端:jdbc + mysql 用于接收某客户端发来的数据(socket通信),并存入数据库,供前端显示。

 

问题:

jdbc可以成功插入数据库,但前端无法取得jdbc插入的数据,而前端自己的更新操作均无问题。

经查看数据库,确定jdbc确实插入了数据库,但hibernate取得的数据列表中就是没有jdbc插入的数据。

同样,jdbc对数据库中的某条数据进行更新操作,经确定已更新到数据库中。但前端hibernate取的数据仍然是未更新前的数据。hibernate的二级缓存未开启,所以排除缓存的原因,而且控制台打印的确实有sql查询语句,也说明并未使用缓存。

 

通过对照以前一个项目,发现我使用是hibernate的默认数据库连接池,未使用dbcp或c3p0。

 

尝试一:偷懒了下,把hibernate的数据库配置,移到spring中。

 

结果:jdbc插入的数据可以被hibernate取得,但jdbc对已有数据的更新,hibernate依旧取到的是未更新前的数据

 

一番折腾后再次尝试:

 

尝试二:为spring的aop事务添加一个默认匹配全部方法的配置,以前只配置了更新,添加,删除的方法

添加匹配其他方法配置 如下

<tx:method name="*" read-only="true"/>

 

结果:OK,hibernate可以正确读取jdbc插入和更新的数据了。

 

最后把spring的数据库配置改为原来的使用hibernate默认的链接池配置,未再出现前面的问题。

 

看来问题确实出在,事务的配置上了。 如果不使用jdbc操作数据库恐怕还发现不了这个问题。。。

 

 

记一次hibernate无法取得jdbc插入数据的问题折腾

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号