使用spring 的 tx\aop 进行事务管理的 需要跑的通的哦 高手赐个实例
谢谢 

解决方案 »

  1.   

    配置了但是不起作用 只能用hibernate的session手动管理 相当郁闷
      

  2.   

    拦截错地方了吧
    你拦截的Service还是Dao
      

  3.   

    拦截这里<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation">
    <value>classpath:hibernate.cfg.xml</value>
    </property>
    <property name="configurationClass"
    value="org.hibernate.cfg.AnnotationConfiguration" />
    </bean>
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean>
    <bean abstract="true" id="hibernateBaseDao" class="org.wx.dao.util.HibernateBase">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="save*" propagation="REQUIRED" />
    <tx:method name="del*" propagation="REQUIRED" />
    <tx:method name="update*" propagation="REQUIRED" />
    </tx:attributes>
    </tx:advice>
    <aop:config>
    <aop:pointcut id="serviceMethod"
    expression="execution(* org.wx.dao.impl.*.*(..))" />
    <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice" />
    </aop:config>
    <bean id="loginDao" class="org.wx.dao.impl.LoginDaoImpl" parent="hibernateBaseDao">
    </bean>
    <bean id="loginService" class="org.wx.service.impl.LoginServiceImpl">
    <property name="loginDao">
    <ref bean="loginDao" />
    </property>
    </bean>
    <bean id="loginAction" class="org.wx.action.LoginAction" scope="prototype">
    <property name="loginService">
    <ref bean="loginService" />
    </property>
    </bean>
    </beans>帮忙看下sessionFactory获取是否有问题package org.wx.dao.util;import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;public class HibernateBase {
    private SessionFactory sessionFactory;
    protected Session session;
    protected Transaction transaction; public HibernateBase() {
    ininHibernater();
    } protected void ininHibernater() {
    setSessionFactory(sessionFactory);
    //sessionFactory = new Configuration().configure().buildSessionFactory();
    sessionFactory = getSessionFactory();
    System.out.println("sessionFactory::::"+sessionFactory);
    session = sessionFactory.openSession();
    //session = sessionFactory.getCurrentSession();
    //transaction = session.beginTransaction();
    System.out.println("session:__"+session);

    } protected void beginTransaction() {
    //transaction.begin();
    System.out.println("transaction:__"+transaction);
    }
    protected void endTransaction(boolean commite) {
    if(transaction!=null){
    if (commite) {
    transaction.commit();
    }
    else {
    transaction.rollback();
    }
    }
    session.close();
    } public SessionFactory getSessionFactory() {
    return sessionFactory;
    } public void setSessionFactory(SessionFactory sessionFactory) {
    ApplicationContext applicationContext =new  ClassPathXmlApplicationContext("applicationContext.xml");
    sessionFactory =(SessionFactory) applicationContext.getBean("sessionFactory");
    this.sessionFactory = sessionFactory;
    }
    }
      

  4.   

    在HibernateBase注入了SessionFactory 但是调用该类的getSessionFactory的时候SessionFactory 为null
      

  5.   

    明显切面不对
    要对DAO作事务处理的,你把拦截器放在DAO层上有什么用哪
    应该在DAO的上层,Service层才对