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

xml 代码
我的配置文件和Dao如下,问题是save方法只能提交到缓存,并没有提交到数据库,找了很多资料都不能解决,只能放弃这种方法,挺不甘心的,网上很多人说是这样做,可是还是不行,希望能找到症结:          
<bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" singleton="true">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialectprop>
<prop key="hibernate.show_sql">trueprop>
<prop key="hibernate.cglib.use_reflection_optimizer">trueprop>
<prop key="hibernate.proxool.xml">Proxool.xmlprop>
<prop key="hibernate.proxool.pool_alias">DBPoolprop>
props>
property>
<property name="mappingResources">
<list>
<value>hibernatePojo/Worker.hbm.xmlvalue>
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.WorkerDAOvalue>
list>
property>
<property name="target">
<ref bean="WorkerDAO"/>
property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIREDprop>
props>
property>
bean>

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


java 代码
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;
}

}


xml 代码
xml 代码    
问题解决,问题在于事务的配置不对,事务应该配置在业务层而不是持久层,配在持久层的方法上就没有意义了
持久层配置文件:
<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_REQUIREDprop>
<prop key="update*">PROPAGATION_REQUIREDprop>
<prop key="del*">PROPAGATION_REQUIREDprop>
<prop key="get*">PROPAGATION_REQUIRED,readOnlyprop>
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方法
很久了,一直没时间尝试,拖到了今天,希望能对大家有所帮助
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值