HibernateTemplate().save(entity)为什么不容永久到数据库

我今天在做ssh(structs and spring and hiernate)项目时,进行整合的时候在输入数据并用Hibernate().save(entity)方法
插入一条数据并永久到数据库时却不容永久化,死心,出了问题,但是程序并没有出错,
左思右想,搞了半天才知道什么原因:
解决方法:
可以在sava方法后面加一句
[color=red]
getHibernateTemplate().getSessionFactory().openSession().beginTransaction();
[/color]
就可以了, :?:

不过这个方法不是很好,我想引起这个原因:


[color=red]问题在于事务的配置不对,事务应该配置在业务层而不是持久层,配在持久层的方法上就没有意义了 [/color]
持久层配置文件:
<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方法

也许对各位有用,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值