`
JAVA_VincentChen
  • 浏览: 1026 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Spring+Hibernate+HSQLDB遇到的问题,求协助

阅读更多
框架版本:
Spring 3.1.1
Hibernate 4.1.2
HSQLDB 1.8.0.10

数据库:
HSQLDB主要是使用内存的模式,测试的表只有TEST_MODEL,这个表是从实体映射创建的表。

问题描述:
-------------------------------------------------------------------------------------------------------
执行保存对象操作没有报错,但是执行hql查询或get操作时,却查询不回对象。

具体代码:
-------------------------------------------------------------------------------------------------------

测试第一步:

执行保存数据操作,代码如下:

DAO层:
执行代码“sessionFactory.getCurrentSession().save(testModel));”,能正常执行并生成主键ID,ID生成策略是用uuid。


Service层:
“testDao.saveTestModel(testModel);”,直接调用dao层的保存方法,返回对象ID。

Controller层:
@RequestMapping(params = "method=doSaveTestModel")
public String doSaveTestModel(HttpServletRequest req) {
req.getSession().setAttribute("testId", testService.saveTestModel(new TestModel("test", new Date())));
System.out.println("save success!");
return "test/test";
}
为了方便后面的测试,我把对象ID存入session里。


测试第二步

执行DAO层的更新操作,代码如下:

Controller层:

@RequestMapping(params = "method=doUpdateTestModel")
public String doUpdateTestModel(HttpServletRequest req) {
// 按ID查询对象
List<TestModel> testModelList = testService.queryTestModel(
req.getSession().getAttribute("testId").toString());
if (testModelList.size() > 0) {
TestModel testModel = testModelList.get(0);
testModel.setName("Vincent");
// 执行更新操作
testService.updateTestModel(testModel);
System.out.println("update success!");
}
return "test/test";
}


Service层:

public void updateTestModel(TestModel testModel) {
testDao.updateTestModel(testModel);
}


DAO层:

public void updateTestModel(TestModel testModel) {
System.out.println(sessionFactory.getCurrentSession().merge(testModel));
}


经过上述操作,发现无法进入红色字体的代码体,也就是说查询不到数据。

以下为关键部分的配置文件:
Spring:

<!-- 数据源配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${hsqldb.driverClassName}" />
<property name="jdbcUrl" value="${hsqldb.url}" />
<property name="user" value="${hsqldb.username}" />
<property name="password" value="${hsqldb.password}" />
<property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
<property name="minPoolSize" value="${c3p0.minPoolSize}" />
<property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
<property name="maxStatements" value="${c3p0.maxStatements}" />
</bean>

<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>hibernate/TestModel.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.cache.provider_class">${hibernate.cache.provider_class}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}</prop>
<prop key="hibernate.cache.region.factory_class">${hibernate.cache.region.factory_class}</prop>
<prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
<prop key="jdbc.use_scrollable_resultset">${jdbc.use_scrollable_resultset}</prop>
</props>
</property>
</bean>

<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
  <property name="sessionFactory"><ref bean="sessionFactory"/></property>
</bean>

<!-- 事务配置 -->
<tx:advice id="userTxAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="insert*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="save" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="update*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="create*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />
<tx:method name="modify*" propagation="REQUIRED" read-only="false"
rollback-for="java.lang.Exception" />

<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="query*" propagation="SUPPORTS" read-only="true" />
<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pc"
expression="execution(public * net.bingosoft.services.*.*(..))" />
<aop:advisor pointcut-ref="pc" advice-ref="userTxAdvice" />
</aop:config>


Hibernate4:

<hibernate-mapping>
<class name="net.bingosoft.model.TestModel"  table="TEST_MODEL" lazy="false">
<id name="id" type="java.lang.String" >
<column name="ID" />
<generator class="uuid" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="lastTime" type="java.util.Date">
<column name="LAST_TIME" />
</property>
</class>
</hibernate-mapping>


Web.xml:

<!-- OperSessionInViewFilter -->
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
  <filter-mapping>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

求协助,等待中,谢谢.....

附件中是完整的项目,使用maven管理jar包。
  • pro.rar (152.6 KB)
  • 下载次数: 12
分享到:
评论

相关推荐

    spring+hibernate+hsqldb 测试

    标题 "spring+hibernate+hsqldb 测试" 暗示了这是一个关于整合Spring框架、Hibernate ORM框架以及HSQLDB内存数据库的测试项目。这个项目可能用于演示如何在Java应用中设置这三个组件,以便进行数据持久化操作。下面...

    spring+hibernate代码实例集

    在这个实例集中,Maven被用来下载和管理Spring、Hibernate以及HSQLDB等依赖库,简化项目的构建过程。 4.2 HSQLDB是一个内存型的关系数据库,常用于测试。在Spring与Hibernate的集成测试中,HSQLDB可以快速启动,...

    struts2+spring2+hibernate3 Annotation的整合

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2专注于MVC(Model-View-Controller)架构的实现,Spring提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,而...

    Struts2+hibernate所需的包文件

    - **集成测试**:模拟实际环境测试整个流程,如Struts2的MockMVC测试和Hibernate的HSQLDB内存数据库测试。 6. **最佳实践**: - **分离关注点**:将视图、控制和数据访问层分开,提高代码可维护性。 - **遵循...

    spring3.2 hibernate4 demo CRUD 完整例子

    Hibernate 4在Spring 3.2的基础上,提供了更高效的性能和更多的功能,如二进制列支持、JPA 2.1规范的实现以及对HSQLDB内存数据库的增强。 在这个CRUD演示中,我们将会看到以下几个关键组件: 1. **配置**:包括...

    JUnit(针对spring和hibernate)

    在与Spring和Hibernate这两个流行框架集成时,JUnit发挥着至关重要的作用,确保了业务逻辑和数据访问层的正确性。 首先,让我们深入了解一下Spring框架。Spring是一个全面的企业级应用开发框架,它提供了依赖注入...

    OSGi、Spring、Hibernate集成:动态注册实体类

    平台依赖度低的解决方案 ...测试环境:equinox3.5.2。其它用到的Bundle包括hibernate、hibernate-annotation、hsqldb、 spring、spring-osgi等。请到http://www.springsource.com/repository/下载。

    jBPM4与Spring整合的2种方式

    1. **配置jBPM4的数据源**:在Spring配置文件中,我们需要为jBPM4定义一个数据源,这通常是通过JNDI查找或直接定义HSQLDB等内存数据源来完成的。 2. **创建ExecutorService**:jBPM4需要ExecutorService来调度和执行...

    最新的SSH JAR包( struts2.3.20 spring4.1.1 hibernate4.3.7)

    SSH是Java开发中常见的三个框架的缩写,分别代表Struts、Spring和Hibernate。这个压缩包包含的是这三个框架的特定版本:Struts2.3.20、Spring4.1.1和Hibernate4.3.7。这些版本在当时是相对稳定的,并广泛应用于企业...

    spring-adventure-football-manager:Spring MVC、Hibernate、JPA、Hsqldb 入门

    本项目"spring-adventure-football-manager"旨在引导初学者通过Spring MVC、Hibernate、JPA和Hsqldb来创建一个入门级的足球经理应用程序,这是一次极好的学习实践机会。 1. **Spring MVC**: Spring MVC是Spring...

    hibernate spring

    标题《hibernate spring》和描述《hibernet spring maven eclipse tutorial》中涉及的知识点包括Hibernate技术、Spring框架、Maven构建工具以及Eclipse集成开发环境。这些内容共同构成了Java企业级应用开发的常用...

    HSQLDB

    HSQLDB可轻松与Spring框架、Hibernate等ORM工具集成,简化数据库操作。例如,使用Spring Data JPA,可以声明式地执行CRUD操作,提高开发效率。 **7. 源码分析** 由于HSQLDB是开源的,开发者可以深入研究其源码,...

    hsqldb-2.0.0

    同时,HSQldb还支持JDBC(Java Database Connectivity),能够与其他Java应用程序和框架无缝集成,如Spring、Hibernate等。 HSQldb的轻量级特性也值得一提。由于它是完全用Java实现的,所以不需要依赖任何操作系统...

    livebookstore-with-hsqldb-1.0.zip

    "livebookstore-with-hsqldb-1.0.zip" 是一个包含此类系统的压缩包,它利用了Spring 2.0框架、UML建模语言以及SSH(Struts、Spring、Hibernate)技术栈,同时还集成了轻量级数据库HSQldb。这个项目为我们提供了深入...

    搭建struts hibernate log4j spring(好东西)

    ### 搭建Struts、Hibernate、Log4j与Spring集成环境详解 #### 一、简介 本文将详细介绍如何在Web项目中集成Struts、Hibernate、Log4j以及Spring框架,构建一个完整的Java Web应用程序环境。这些技术组合在一起能够...

Global site tag (gtag.js) - Google Analytics