У меня есть путаница в управлении транзакциями Spring. В моем приложении я реализовал управление транзакциями, используя @Transactional в классе службы. И я настроил мой spring.xml, как:Управление весовыми транзакциями: использование @Transactional против AOP (<aop: advisor)
<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">${jdbc.dialect}</beans:prop>
<beans:prop key="hibernate.show_sql">false</beans:prop>
<beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
<!-- Transaction manager -->
<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>
Если я реализовать управление транзакциями в файле конфигурации, как показано ниже, не используя @Transactional в классе обслуживания:
<aop:pointcut id="defaultServiceOperation"
expression="execution(* x.y.service.*Service.*(..))"/>
<aop:pointcut id="noTxServiceOperation"
expression="execution(* x.y.service.ddl.DefaultDdlManager.*(..))"/>
<aop:advisor pointcut-ref="defaultServiceOperation" advice-ref="defaultTxAdvice"/>
<aop:advisor pointcut-ref="noTxServiceOperation" advice-ref="noTxAdvice"/>
</aop:config>
это делает дайте мне преимущества над @Transactional? Кто-то сказал мне, что использование @Transactional - это также реализация АОП весной. Может ли кто-нибудь объяснить мне, как?
Спасибо за ваш ответ. Вы не только ответили на мой вопрос, но и дали мне представление о весенних сделках. У меня было ощущение, что @Transactional легче понять и работать легче. Когда Spring управляет всем процессом транзакции, теперь я могу выбрать этот подход по сравнению с методом управления транзакциями на основе xml. –