일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Web Server
- Spring
- MySQL
- Oracle
- Spring Batch
- devops
- 맛집
- tool
- JVM
- javascript
- it
- linux
- elasticsearch
- jsp
- redis
- jenkins
- 요리
- ubuntu
- Design Patterns
- AWS
- java
- Spring Boot
- springboot
- php
- Gradle
- Git
- db
- laravel
- IntelliJ
- ReactJS
Archives
- Today
- Total
아무거나
[spring] 트랜잭션(Transaction) - 1 본문
반응형
[spring] 트랜잭션(Transaction) - 1
트랙잭션이란 논리적 단위로 어떤 한 부분의 작업이 완료되었다 하더라도, 다른 부분의 작업이 실패할 경우 전체 취소되는 것이다.
이때, 작업이 완료되는것을 커밋(commit), 취소(이전으로 되돌리다)되는 것을 롤백(rollback)이라한다.
-> 일상생활에서는 카드 결제나 마일리지 적립 ATM 등 사용된다.
1. dao에 트랜잭션 관련 내용 추가
[testDao.java]
....
PlatformTransactionManager transactionManager; // 트랜잭션 매니저 선언
// 트랜잭션 매니저 setter 추가
public void setTransactionManager( PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
....
public void buyTest(final TestDto dto) {
TransactionDefinition definition = new DefaultTransactionDefinition(); // 트랜잭션이 구동하는데 기본적으로 필요한 객체
TransactionStatus status = transactionManager.getTransaction(definition); // 트랜잭션의 설정정보를 꺼내옴
// 성공했을때 실패했을때 트랜잭션을 사용해야하므로 try ~ catch 선언
try {
.... (저장로직)
transactionManager.commit(status); // 성공적으로 되면 트랜잭션에서 commit을 해준다.
} catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(status); // 실패하면 트랜잭션에서 rollback을 해준다.
}
....
....
2. 스프링 설정파일에 설정(src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml)
[servlet-context.xml]
....
<!-- 트랜잭션 매니저 설정 -->
<beans:bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<beans:property name="dataSource" ref="dataSource" />
</beans:bean>
<!-- DAO객체에 트랜잭션 매니저를 만들고 거기에 참조하고있다. -->
<beans:bean name="dao" class="com.javalec.spring_pjt_ex.dao.TicketDao" >
<beans:property name="template" ref="template" /> <!-- JDBC템플릿 -->
<beans:property name="transactionManager" ref="transactionManager" /> <!-- 트랜잭션 매니저 -->
</beans:bean>
....
* class path를 모르는경우 직접 java파일에 해당 패키지를 추가해보면 class path가 import에 지정된다.
반응형
'Java & Kotlin > Spring' 카테고리의 다른 글
Log4J 에서 isDebugEnabled() 을 사용한 효율적인 리소스 관리 (0) | 2020.05.08 |
---|---|
[spring] 트랜잭션(Transaction) - 2 (0) | 2019.12.26 |
[spring] JDBC (0) | 2019.12.26 |
[spring] 폼 데이터 값 검증 (0) | 2019.12.25 |
[spring] @RequestMapping 파라미터 (0) | 2019.12.25 |
Comments