hiberante使用Spring声明式事物

来源:互联网 发布:豪力海文软件下载 编辑:程序博客网 时间:2024/06/05 05:53
           

hiberante使用Spring声明式事物


    配置数据源

            <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">                <property name="driverClass" value="${jdbc.driverClassName}" />                <property name="jdbcUrl" value="${jdbc.url}" />                <property name="user" value="${jdbc.username}" />                <property name="password" value="${jdbc.password}" />            </bean>        


    配置sessionFactory

                <bean id="sessionFactory"  class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">                    <property name="dataSource" ref="dataSource"></property>                    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>                    <property name="mappingLocations" value="classpath:com/link/*.hbm.xml"></property>                </bean>


                

    配置事物管理器

                <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">                    <property name="sessionFactory" ref="sessionFactory"></property>                </bean>


    在xml中定义事物

            <tx:advice id="txAdvice" transaction-manager="transactionManager">                <tx:attributes>                    <tx:method name="execute" propagation="REQUIRED"                    isolation="READ_COMMITTED" read-only="false"                    timeout="-1"                    />                    <tx:method name="*"/>                </tx:attributes>            </tx:advice>                     <aop:config>                <aop:pointcut expression="execution(void com.link.Option.*())" id="pc"/>                <aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>            </aop:config>


    用注解定义的事物


            <tx:annotation-driven/>




    在Dao中获取session

       
            @Component            //需要在Spring配置文件中定义扫描            public class Option {                            @Autowired                private SessionFactory factory;                                private Session getSession(){                                        return factory.getCurrentSession();                    //获取当前线程绑定的session,这个要在开启事物的时候使用,不然会抛出异常,                }            }        


                                         

<!-- <property name="current_session_context_class">thread</property> -->


0 0