Comment mettre en place des transactions avec myBatis et le Printemps
Je suis en train de configurer transaction, mais sans succès.
Voici mon code:
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="dataSource" class="org.apache.ibatis.datasource.pooled.PooledDataSource">
.......
<property name="defaultAutoCommit" value="false" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-configuration.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
@Transactional
private void prcessTransaction(...) {
delete(...);
//insert:
for(Item item: itemList){
insert(item)
}
}
<delete id="delete" parameterType="map">
delete from .....
</delete>
<insert id="insert" parameterType="Item">
insert into ....
</insert>
Il semble que prcessTransaction méthode n'est pas seulement une transaction, mais des ensembles de plusieurs opérations.
Je suis à l'aide de Printemps 3.0.5, myBatis 3.0.4, mybatis-printemps-1.0.1, Tomcat 7.0.19, Oracle 11.1.0.6.0
Merci pour l'aide.
- Êtes-vous en faveur
getSqlMapClientTemplate
(le Printemps de l'API) ou êtes-vous à la délivrance de la iBATIS appels à l'aide de la iBATIS API? - Je suis à l'aide de iBatis appels.
- Est-ce que votre support de base de données de transactions?
- Bien sûr, je suis en utilisant Oracle 11.1.0.6.0
Vous devez vous connecter pour publier un commentaire.
Mettre @transactional sur une méthode privée semble poser problème, le Printemps de la documentation dit:
La même section a de ce côté:
Nous avons eu un problème similaire, mais dans un environnement plus complexe, où nous disposons de 2 bases de données avec leur propre gestionnaire de transactions chaque. La seule façon que nous avons réussi à le travail était de préciser le gestionnaire de transactions instance sur la
@Transactional("transactionManager")
annotation.Ça marche, même si je suis de gauche insatisfait que je ne comprends pas pourquoi nous avons besoin de spécifier explicitement le gestionnaire de transactions sur l'annotation.