SpringBoot 수동 트랜잭션 관리
3299 단어 SpringBoot
서비스 클래스에 두 개의 주석을 추가해야 한다
@Autowired DataSourceTransactionManager dataSourceTransactionManager; @Autowired TransactionDefinition transactionDefinition;
트랜잭션 TransactionStatus transactionStatus = dataSourceTransactionManager를 수동으로 엽니다.getTransaction(transactionDefinition); 트랜잭션 데이터 SourceTransactionManager를 수동으로 커밋합니다.commit(transactionStatus);//수동 롤백 트랜잭션 데이터 SourceTransactionManager를 커밋합니다.rollback(transactionStatus);//가장 좋은 것은catch에 넣어서 프로그램의 이상을 방지하고, 업무가 어디에 계속 걸려서 제출되지 않는 것을 방지하는 것이다
package com.java.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import com.java.entity.User;
import com.java.service.impl.UserServiceImpl;
@Controller
@RequestMapping(value = "/p")
public class tt {
@Autowired
public UserServiceImpl t;
@Autowired
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;
@RequestMapping(value = "/test")
public void jj(){
TransactionStatus transactionStatus=null;
try {
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
User user=new User();
user.setId("12");
user.setUsername("nihao");
user.setPassword("12346");
t.insert(user);
System.out.println(" ");
dataSourceTransactionManager.commit(transactionStatus);//
TransactionStatus transactionStatus2 = dataSourceTransactionManager.getTransaction(transactionDefinition);
User user2=new User();
user2.setId("12");
user2.setUsername("nihao");
user2.setPassword("12346");
t.insert(user2);
dataSourceTransactionManager.commit(transactionStatus2);//
} catch (Exception e) {
if(transactionStatus!=null){
dataSourceTransactionManager.rollback(transactionStatus);
}
e.printStackTrace();
}
}
@RequestMapping(value = "/test2")
public void jj2(){
TransactionStatus transactionStatus=null;
try {
transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
User user=new User();
user.setId("12");
user.setUsername("nihao");
user.setPassword("12346");
t.insert(user);
System.out.println(" ");
/*dataSourceTransactionManager.commit(transactionStatus);//
TransactionStatus transactionStatus2 = dataSourceTransactionManager.getTransaction(transactionDefinition);*/
User user2=new User();
user2.setId("12");
user2.setUsername("nihao");
user2.setPassword("12346");
t.insert(user2);
dataSourceTransactionManager.commit(transactionStatus);//
} catch (Exception e) {
if(transactionStatus!=null){
dataSourceTransactionManager.rollback(transactionStatus);
}
e.printStackTrace();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.