「Spring」トランザクション(PlatformTransactionManager)処理の使い方
構文
1.インターフェース PlatformTransactionManager
getTransaction(TransactionDefinition definition)
指定された伝播動作に従って、現在アクティブなトランザクションを返すか、新しいトランザクションを作成します。
rollback(TransactionStatus status)
指定されたトランザクションのロールバックを実行します。
2.インターフェースTransactionDefinition
setPropagationBehavior(int propagationBehavior)
伝播動作を設定します。
public final void setIsolationLevel(int isolationLevel)
分離レベルを設定します。
使用例
public class StudentFrom extends BaseForm {
//トランザクションのインスタンス変数につける
@Autowired
private PlatformTransactionManager ptManager;
public String testFunc() {
//TransactionDefinitionの変数dtdの宣言
DefaultTransactionDefinition dtd = null;
//TransactionStatusの変数statusの宣言
TransactionStatus status = null;
try {
dtd = new DefaultTransactionDefinition();
// 伝播動作を設定
dtd.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// 分離レベルを設定
dtd.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
// 読み取り専用トランザクションとして最適化するかどうかを設定
dtd.setReadOnly(false);
// 新しいトランザクションを作成
status = ptManager.getTransaction(dtd);
//処理コード
//指定されたトランザクションをコミット
ptManager.commit(status);
} catch (IllegalArgumentException e) {
// 指定されたトランザクションのロールバックを実行
ptManager.rollback(status);
}
return xxx;
}
}
public class StudentFrom extends BaseForm {
//トランザクションのインスタンス変数につける
@Autowired
private PlatformTransactionManager ptManager;
public String testFunc() {
//TransactionDefinitionの変数dtdの宣言
DefaultTransactionDefinition dtd = null;
//TransactionStatusの変数statusの宣言
TransactionStatus status = null;
try {
dtd = new DefaultTransactionDefinition();
// 伝播動作を設定
dtd.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
// 分離レベルを設定
dtd.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
// 読み取り専用トランザクションとして最適化するかどうかを設定
dtd.setReadOnly(false);
// 新しいトランザクションを作成
status = ptManager.getTransaction(dtd);
//処理コード
//指定されたトランザクションをコミット
ptManager.commit(status);
} catch (IllegalArgumentException e) {
// 指定されたトランザクションのロールバックを実行
ptManager.rollback(status);
}
return xxx;
}
}
public class StudentFrom extends BaseForm { //トランザクションのインスタンス変数につける @Autowired private PlatformTransactionManager ptManager; public String testFunc() { //TransactionDefinitionの変数dtdの宣言 DefaultTransactionDefinition dtd = null; //TransactionStatusの変数statusの宣言 TransactionStatus status = null; try { dtd = new DefaultTransactionDefinition(); // 伝播動作を設定 dtd.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); // 分離レベルを設定 dtd.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); // 読み取り専用トランザクションとして最適化するかどうかを設定 dtd.setReadOnly(false); // 新しいトランザクションを作成 status = ptManager.getTransaction(dtd); //処理コード //指定されたトランザクションをコミット ptManager.commit(status); } catch (IllegalArgumentException e) { // 指定されたトランザクションのロールバックを実行 ptManager.rollback(status); } return xxx; } }
general-context.xmlの設定
<!-- @Autowiredアノテーションを有効にする設定 -->
<context:annotation-config />
<!-- @Autowiredアノテーションを有効にする設定 -->
<context:annotation-config />
<!-- @Autowiredアノテーションを有効にする設定 --> <context:annotation-config />