Spring手動トランザクション制御
1573 ワード
プロジェクト開発では、手動トランザクションを使用して制御する必要があります.次に、問題と解決策について説明します.
プログラムがネストされたトランザクションを使用する必要がある場合は、次のように構成ファイルに構成プロパティを追加する必要があります.
手動トランザクションによる制御が必要な場合は、次のPlatformTransactionManagerコードを使用します.
宣言トランザクションと組み合わせて制御する場合は、次のコードを使用します.
プログラムがネストされたトランザクションを使用する必要がある場合は、次のように構成ファイルに構成プロパティを追加する必要があります.
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="nestedTransactionAllowed" value="true"/>
</bean>
手動トランザクションによる制御が必要な場合は、次のPlatformTransactionManagerコードを使用します.
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED);
PlatformTransactionManager txManager =
(PlatformTransactionManager) BeanLocator.getInstance().getBean("transactionManager");
TransactionStatus transactionStatus = txManager.getTransaction(def);
try {
} catch (Exception e) {
logger.error(" " + settlement.toString(), e);
txManager.rollback(transactionStatus);
throw new XmlHttpException(IoddConstant.PRM_OTHER_ERROR," ");
}
宣言トランザクションと組み合わせて制御する場合は、次のコードを使用します.
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();