大概情况如下
前端: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操作数据库恐怕还发现不了这个问题。。。
分享到:
相关推荐
在数据插入过程中,通常将一系列操作封装在一次事务中,以确保数据的一致性。 9. **错误处理和日志**:在实际开发中,需要考虑错误处理,比如捕获`HibernateException`,并使用日志记录框架(如Log4j)记录异常信息...
在标题和描述中提到的"kingbaseV8 hibernate jdbc驱动",意味着我们需要关注如何在Hibernate框架中使用KingbaseV8的JDBC驱动进行数据操作。 JDBC(Java Database Connectivity)是Java中用于连接数据库的标准接口,...
相比之下,Hibernate是一个对象关系映射(ORM)框架,它抽象了数据库操作,提供了面向对象的方式来处理数据。Hibernate使用HQL(Hibernate Query Language)或Criteria API,使得开发者可以以更面向对象的方式编写...
标题和描述中提到的关键信息是“hibernate3”、“依赖包”和“JDBC”。这表明我们将讨论关于Hibernate ORM框架的第三版,它所需的依赖库,以及与Java数据库连接(JDBC)的关系。Hibernate是一个流行的Java持久化框架...
在这个示例中,我们将探讨如何将Hibernate ORM框架、ShardingSphere的ShardingJDBC模块与Spring Boot整合,构建一个高效的分布式数据库应用。这样的组合允许我们利用Hibernate的强大ORM能力,同时通过ShardingJDBC...
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
- **性能问题**:对于某些复杂查询,Hibernate可能无法达到最佳性能,尤其是在处理大量数据时。 - **学习曲线**:虽然Hibernate简化了许多操作,但对于新手来说,理解其核心概念和配置仍需一定时间。 - **灵活性限制...
总的来说,"hibernate 链接access数据的jdbc驱动包"是一个包含必要的JDBC驱动和可能的辅助资源的集合,用于使Hibernate能够与Access数据库进行通信。尽管Access在企业级应用中可能不是首选的数据库,但在小型项目或...
3. **数据状态**:JDBC操作的数据是瞬时的,数据库与内存中的数据可能不一致,而Hibernate提供了一种对象-关系映射机制,使得数据具有持久性,能够保持数据库与对象的一致性。 **性能比较:** 1. **创建操作**:...
总结起来,"struts+hibernate+jdbc双表查询"是关于如何在Java Web项目中,利用Struts处理请求,Hibernate管理数据对象与数据库的映射,以及JDBC进行复杂数据库操作,特别是涉及到两个表之间的联合查询。在实际开发中...
**Hibernate**则是一种ORM(Object Relational Mapping,对象关系映射)框架,它简化了数据持久化层的复杂性,提供了比JDBC更为高级的功能,如缓存机制、事务管理以及对象关系映射等。通过使用Hibernate,开发者可以...
本文将深入探讨Spring如何为Hibernate和JDBC提供支持,帮助开发者更高效地进行数据访问操作。 首先,Spring对Hibernate的支持体现在其集成层面。通过Spring,我们可以将Hibernate的SessionFactory和Session对象的...
本篇将详细探讨“Hibernate插入数据”的相关知识点,结合学习心得,深入理解并掌握其核心原理与实践技巧。 首先,Hibernate通过对象关系映射(ORM)技术,将数据库表与Java类关联起来,使得数据库操作可以通过对象...
总结来说,无论是通过JDBC还是Hibernate,写入Oracle数据库的Blob字段都需要先创建一个空Blob,然后获取其cursor,最后将二进制数据写入Blob。在JDBC中,这个过程涉及多个SQL语句和流操作;而在Hibernate中,通过ORM...
Hibernate 是一个对象关系映射(ORM)框架,而 JDBC(Java Database Connectivity)是 Java 语言中用于与数据库交互的标准 API。两者的本质区别主要体现在以下几个方面: 1. **编程模型**: - **JDBC**:使用 ...
标题 "Jdbc 和hibernate" 提到的两个主要概念是Java数据库连接(JDBC)和Hibernate,它们都是Java开发中用于与关系型数据库交互的重要技术。本文将深入探讨这两个技术,以及它们之间的区别和联系。 JDBC是Java平台...
本话题将详细探讨两种常见的Java技术:Hibernate和JDBC,用于实现这一目标。 **JDBC(Java Database Connectivity)** 是Java平台上的标准API,它允许Java应用程序连接到各种类型的数据库。JDBC提供了连接数据库、...
以下是对“JDBC+Hibernate将Blob数据写入Oracle”这一主题的深入解析。 ### JDBC与Oracle BLOB的交互 #### 1. 理解Oracle BLOB特性 在Oracle中,BLOB用于存储大量的二进制数据,如图像文件。与传统的文本或数字...
本文将深入探讨如何在Java开发环境中使用Hibernate框架以及JDBC结合SQL Server 2005来实现数据分页功能。 #### Hibernate中的分页实现 在Hibernate框架中实现分页功能相对较为简单。通过`Query`对象提供的方法即可...