大概情况如下
前端: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操作的数据是“瞬时”的,变量的值无法与数据库中的值保持一致,而Hibernate操作的数据是可持久的,即持久化对象的数据属性的值是可以跟数据库中的值保持一致的。 JDBC与Hibernate读取性能 ...
jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和hibernate的区别jdbc和...
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
kingbaseV8 hibernate jdbc 驱动
hibernate所需包:hibernate3,依赖包,JDBC
JDBC与Hibernate的比较JDBC与Hibernate的比较
struts+hibernate+jdbc双表查询
使用JDBC和Hibernate来写入Blob型数据到Oracle中;使用JDBC和Hibernate来写入Blob型数据到Oracle中
Hibernate链接access数据是所需的jdbc驱动包
分别使用Hibernate和JDBC操作数据库
Hibernate hibernate.jdbc.batch_size 测试带有 MySQL JDBC 驱动程序的 Hibernate 批量插入示例。 에 관한 설명
JDBC+Hibernate将Blob数据写入Oracle
简介Hibernate和JDBC, 并比较二者的关联于区别
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助...在此谢谢各位!!
hibernate和jdbc测试
很多人都对Java在批量数据的处理方面是否是其合适的场所持有怀疑的念头,由此延伸,...下面以Hibernate为例来做为说明,假如我们真的不得不在Java中使用Hibernate来对数据进行批量处理的话。 向数据库插入100 000条数据
struts2.16 spring2.56 hibernate3.2 sqljdbc4 完整jar包 资源不好找,大家收藏好,别忘记评论。
类似hibernate的jdbc简单封装,说不定大家用的上。。
Hibernate 使用缓存时,数据同步问题