我在spring设置了事务管理,但是对于需要使用事务的方法,如果不手动开启事务,这个方法根本不执行 15

我在spring设置了事务管理,但是对于需要使用事务的方法,如果不手动开启事务,这个方法根本不执行,如session.delete().,也就是数据根本没有删除。加上了手... 我在spring设置了事务管理,但是对于需要使用事务的方法,如果不手动开启事务,这个方法根本不执行,如session.delete().,也就是数据根本没有删除。加上了手动开启、提交事务就可以。
代码如下:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>
<!-- 配置事务管理 -->
<bean id="transactionManager"

class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 通知 -->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>

<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="all" expression="execution(* com.cstp.service.*.*

(..))"/>
<!-- 加入切入点,和通知配置 -->
<aop:advisor advice-ref="txadvice" pointcut-ref="all"/>
</aop:config>
<!-- dao -->
<bean id="user1DAO" class="com.cstp.impl.User1Impl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- service -->
<bean id="user1Service" class="com.cstp.service.User1ServiceImpl">
<property name="user1DAO" ref="user1DAO"/>
</bean>

<!-- action -->
<bean id="user1Action" class="com.cstp.action.User1Action">
<property name="user1Service">
<ref bean="user1Service"/>
</property>
</bean>
</beans>

public class User1ServiceImpl implements User1Service{
//xml文件中的依赖注入,property="user1DAO"
private User1DAO user1DAO;

public boolean deleteUser(String userid) {
return user1DAO.deleteUser(userid);
}
}

public class User1Impl extends HibernateDaoSupport implements User1DAO{

public boolean deleteUser(String userid){
Session session=null;
//Transaction tr=null;
try {
session=this.getHibernateTemplate().getSessionFactory().openSession();
//tr=session.beginTransaction();

User1 user=(User1) session.get(User1.class, userid);
session.delete(user);
//tr.commit();
return true;
} catch (HibernateException e) {
e.printStackTrace();
/*if(tr!=null){
tr.rollback();
}*/
return false;
}finally{
if(session!=null){
session.close();
}
}
}

省略了接口,serivce接口调用实现类,实现类中有调用了user的接口,从而调用到实现类
展开
 我来答
百度网友3b4e952
2013-02-01 · TA获得超过472个赞
知道小有建树答主
回答量:409
采纳率:100%
帮助的人:326万
展开全部
你这用的是hibernate吧。。这和spring没多大关系吧。。hibernate不会自动提交事务的。是手动提交的。你不提交事务。他只是在缓存中而已。不会持久化的。
Mxyue0208
推荐于2018-04-12 · TA获得超过417个赞
知道小有建树答主
回答量:348
采纳率:0%
帮助的人:124万
展开全部
<bean id="user1Service" class="com.cstp.service.User1ServiceImpl">你的service没有impl包
那你上面定义切入点的时候就多了一个 * ,你去掉试试!
<aop:pointcut id="all" expression="execution(* com.cstp.service.*(..))"/>

或者你先直接把切入点定义在dao层试试!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
java小杰
2014-05-30
知道答主
回答量:1
采纳率:0%
帮助的人:1371
展开全部
<bean id="user1Service" class="com.cstp.service.User1ServiceImpl">你的service没有impl包
那你上面定义切入点的时候就少了一个 点,你去掉试试!
<aop:pointcut id="all" expression="execution(* com.cstp.service..*.*(..))"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
于_老头儿
2013-02-04 · TA获得超过165个赞
知道答主
回答量:176
采纳率:100%
帮助的人:81.6万
展开全部
哥哥,我想说你事务方法写了?aop类写了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式