`
xhy0422
  • 浏览: 281143 次
社区版块
存档分类
最新评论

spring+hibernate 的hibernateTemplate 的save不能提交到数据库的问题

阅读更多
我的配置文件和Dao如下,问题是save方法只能提交到缓存,并没有提交到数据库,找了很多资料都不能解决,只能放弃这种方法,挺不甘心的,网上很多人说是这样做,可是还是不行,希望能找到症结:

<bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true">
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
    <prop key="hibernate.proxool.xml">Proxool.xml</prop>
    <prop key="hibernate.proxool.pool_alias">DBPool</prop>
    </props>
    </property>
<property name="mappingResources">
<list>
<value>hibernatePojo/Worker.hbm.xml</value>
</list>
</property>
</bean>

<bean id="TransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="SessionFactory"/>
</property>
</bean>

<bean id="WorkerDAO" class="hibernateDaoImpl.WorkerDAOImpl">
<property name="sessionFactory">
<ref bean="SessionFactory"/>
</property>
</bean>

<bean id="WorkerDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="TransactionManager"/>
</property>
<property name="proxyInterfaces">
<list>
<value>hibernateDaoInterface.WorkerDAO</value>
</list>
</property>
<property name="target">
<ref bean="WorkerDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

业务层
<bean id="WorkerLoginCheck" class="serviceImpl.WorkerLoginCheckImpl">
<property name="workerDAO">
<ref bean="WorkerDAOProxy"/>
</property>
</bean>

DAO代码:
public class DAOImpl extends HibernateDaoSupport implements DAO {
public boolean insertOne(Object entity) {
try {
    getHibernateTemplate().save(entity);
return true;
} catch (DataAccessException e) {
e.printStackTrace();
return false;
}

}
分享到:
评论
8 楼 xhy0422 2007-06-09  
问题解决,问题在于事务的配置不对,事务应该配置在业务层而不是持久层,配在持久层的方法上就没有意义了
持久层配置文件:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="SessionFactory" />
</property>
</bean>
<bean id="baseTransactionProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
abstract="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="cha*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="WorkerDAO" class="hibernateDaoImpl.WorkerDAOImpl">
<property name="sessionFactory">
<ref bean="SessionFactory" />
</property>
</bean>
业务层配置:
<bean id="WorkerLoginCheck" parent="baseTransactionProxy">
<property name="target">
<ref local="WorkerLoginCheckTarget" />
</property>
</bean>
<bean id="WorkerLoginCheckTarget" class="serviceImpl.WorkerLoginCheckImpl">
<property name="workerDAO">
<ref bean="WorkerDAO" />
</property>
</bean>
实现方法:
serviceImpl.WorkerLoginCheckImpl中有chaWorker方法,调用WorkerDAO的insertOne方法
很久了,一直没时间尝试,拖到了今天,希望能对大家有所帮助
7 楼 youbin_ 2007-05-28  
<prop key="hibernate.proxool.xml">Proxool.xml</prop>
<prop key="hibernate.proxool.pool_alias">DBPool</prop>

直接用JDBC试试
6 楼 四输五金 2007-05-18  
我也遇到同样的问题了
请问这个问题解决了没啊?先谢谢了
5 楼 抛出异常的爱 2007-05-08  
xhy0422 写道
我有试过save后做一下flash或commit,还是不灵
我最初就是用<prop key="insert*">PROPAGATION_REQUIRED</prop> 的但是还是不行,所以才改成
<prop key="save*">PROPAGATION_REQUIRED</prop>
这个方法名应该是自己的方法名insert..还是daosupport的方法名save..呢?

虽然看不到你的serviceImpl.WorkerLoginCheckImpl代码但是猜想:
interface WorkerLoginCheck{
insertOne();
}
改名为
interface WorkerLoginCheck{
saveOne();
}
4 楼 xhy0422 2007-05-08  
我有试过save后做一下flash或commit,还是不灵
我最初就是用<prop key="insert*">PROPAGATION_REQUIRED</prop> 的但是还是不行,所以才改成
<prop key="save*">PROPAGATION_REQUIRED</prop>
这个方法名应该是自己的方法名insert..还是daosupport的方法名save..呢?

3 楼 Sam1860 2007-04-29  
引用

<prop key="save*">PROPAGATION_REQUIRED</prop>


问题就在这里没有匹配到DAO的方法名
2 楼 zyl 2007-04-28  
不知道,你是怎么调用你的dao的。一般情况下,在事务环境中,才会提交。要不然就不要使用spring的daoSupport,直接调用申明自己的事务环境。

<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
</props>
</property>
中是不是应该增加<prop key="insert*">PROPAGATION_REQUIRED</prop>
1 楼 surpass_li 2007-04-28  
你好,我昨天出差了,回来后看到你的信息,你试一下,save后做一下flash或cmmit。

相关推荐

    Spring+Hibernate工具类所有增删改查

    - `save(Object entity)`: 使用Hibernate的Session保存一个实体对象到数据库。 - `update(Object entity)`: 更新数据库中已存在的实体对象。 - `delete(Object entity)`: 删除数据库中对应的实体对象。 - `findById...

    Spring+Hibernate+Struts2

    - **去除Hibernate.cfg.xml文件**:不再使用传统的`hibernate.cfg.xml`文件,而是将这些配置转移到Spring的`applicationContext.xml`文件中。 - **配置SessionFactory**:通过Spring来创建和管理`SessionFactory`...

    spring+hibernate+struts小项目

    在SSH整合项目中,Spring与Hibernate的集成通常通过Spring的HibernateTemplate或SessionFactoryBean实现,这样可以利用Spring的事务管理功能。而Struts与Spring的结合则通过拦截器(Interceptor)来实现,比如使用...

    spring+hibernate详解

    `HibernateTemplate`是Spring为Hibernate提供的一个高级抽象层,它提供了一系列封装好的方法来简化Hibernate的使用,例如`save(Object entity)`、`update(Object entity)`、`delete(Object entity)`等。这些方法简化...

    struts+spring+hibernate面试题

    - `get()`则会立即从一级缓存、二级缓存或数据库中查找实体,找不到则返回`null`。 5. 延迟加载(Lazy Loading)和`openSessionInView`模式: - 延迟加载是在需要时才加载关联对象,确保只在session范围内加载,...

    SpringMVC4+Hibernate4 整合 带增删改查 和 文件的上传和下载

    例如,对于“增加”操作,Controller接收前端提交的数据,通过Service层调用DAO的save()方法将数据保存到数据库;对于“删除”,则通过Service层调用delete()方法;“修改”和“查询”同样如此,通过update()和find...

    Spring+Hibernate实现增删改查的两种方法

    在Java Web开发中,Spring和Hibernate是两个非常重要的框架,它们常常被联合使用来处理数据库操作,如增、删、改、查(CRUD)。本文将深入探讨如何利用Spring与Hibernate整合,通过两种不同的方式来实现这些基本操作...

    Struts+Spring+Hibernate实现的增删查该Demo(不带jar包)

    不过需要注意的是,由于此Demo不包含jar包,开发者需要自行下载并添加所需的依赖库,例如Struts、Spring、Hibernate的相关库,以及可能的数据库驱动等。 总的来说,"Struts+Spring+Hibernate实现的增删查改Demo"是...

    struts+spring+hibernate ssh框架一个实例

    5. 数据库访问:在DAO层,编写数据库操作方法,利用Hibernate的API(如Session的save(), get(), update()等)进行数据操作。这些DAO类也可以由Spring管理,通过@Autowired注解自动注入SessionFactory。 6. 视图展示...

    Spring+Hibernate 增删改查等基本操作

    Spring是一个全面的Java应用程序框架,它提供了一个用于管理对象依赖关系的容器,简化了编程模型,而Hibernate则是一个对象关系映射(ORM)框架,使得开发者可以使用面向对象的方式来操作数据库。 在"Spring+...

    Spring_Spring_Hibernate_HibernateTemplate

    本篇将深入探讨Spring与Hibernate的集成,特别是Spring提供的HibernateTemplate,它是Spring对Hibernate的一种封装,简化了数据库操作。我们将围绕以下几点进行详细讲解: 1. **Spring框架基础**: Spring是一个...

    struts+spring+hibernate笔试题

    ### Struts + Spring + Hibernate 笔试题解析 #### 一、Struts 流程与特性 **Struts1 的流程:** 1. **初始化:** 首先加载配置文件 `struts-config.xml`,创建核心控制器 `ActionServlet`。 2. **请求处理:** ...

    收集的struts+spring+hibernate面试题.doc

    - **使用 Hibernate**:Spring 提供了 `HibernateTemplate` 类来简化 Hibernate 的使用。例如,通过 `save()`, `update()`, `delete()`, `find()` 等方法进行数据操作。 - **事务管理**:Spring 通过 `...

    Spring整合Hibernate案例

    - Hibernate是一个流行的ORM框架,它简化了Java应用程序与数据库之间的交互,通过将Java对象映射到数据库表,使得开发者可以使用对象而非SQL进行数据操作。 2. **整合目的** - 整合Spring和Hibernate的主要目的是...

    细说如何整合spring+hibernate +jsf中的代码

    在IT行业中,构建高效、可维护的Web应用是至关重要的,Spring、Hibernate和JSF(JavaServer Faces)是三个在Java领域广泛使用的框架,分别负责依赖注入、对象关系映射和用户界面呈现。本文将详细讲解如何将这三个...

    Struts2.2+Spring3.1+Hibernate3.6整合(登录示例及CRUD操作)

    Struts2的struts.xml文件会定义Action及其结果,Spring的applicationContext.xml文件会配置Bean,而Hibernate的hibernate.cfg.xml文件则用于配置数据库连接。然后,通过Spring的DispatcherServlet将Struts2与Spring...

    收集的struts+spring+hibernate面试题借鉴.pdf

    10. 在Spring中使用Hibernate,可以通过`HibernateTemplate`提供的方法如`save()`, `update()`, `delete()`, `find()`等进行数据库操作。Spring的声明式事务管理会在执行这些方法时自动启动事务,如果没有配置事务,...

    Spring-hibernate结合使用全xml配置方式

    在Java企业级开发中,Spring和Hibernate是两个非常重要的框架,Spring主要负责依赖注入和管理,而Hibernate则专注于对象关系映射(ORM)和数据库操作。本教程将详细介绍如何将两者结合,通过全XML配置方式进行集成,...

    struts+hibernate+spring 对数据库进行增删改查

    在SSH框架中,Hibernate负责将数据模型对象持久化到数据库,支持对数据库的增删改查操作。例如,通过Session对象的save()、update()、delete()和get()等方法,可以实现对数据库记录的添加、修改、删除和查询。 **...

Global site tag (gtag.js) - Google Analytics