Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- tutorial
- 이더리움
- 데이터 시각화
- java
- 코딩
- JPA
- SpringDataJpa
- OpenAI
- querydsl
- 딥러닝
- 프로그래밍
- 머신러닝
- seaborn
- 웹개발
- Practice
- node.js
- Ai
- Python
- 데이터베이스
- 블록체인실습
- springboot
- ORM
- 암호화폐
- 파이썬
- SQL
- ChatGPT
- 실습
- 데이터 분석
- 블록체인
- 스마트컨트랙트
Archives
- Today
- Total
집돌이 공대남 IT
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(8) 본문
JPA 트랜잭션 관리: 더 깊이 알아보기
안녕하세요, 공대남입니다.
이번 포스트에서는 JPA에서의 트랜잭션 관리에 대해 더 깊이 들어가겠습니다.
트랜잭션을 제대로 이해하고 활용하는 것은 데이터 일관성과 성능에 큰 영향을 미칩니다.
트랜잭션의 개념 재정립
먼저 트랜잭션이 무엇인지 간단히 복습해봅시다. 트랜잭션은 데이터베이스의 상태를 변화시키기 위해 수행되는 작업 단위입니다. 이 작업 단위 내에서의 모든 동작은 원자적(Atomic)입니다, 즉, 작업이 중간에 실패하면 처음부터 롤백이 됩니다.
@Transactional
어노테이션 속성
@Transactional
어노테이션은 다양한 속성을 제공합니다:
propagation
: 트랜잭션 전파 방식을 설정합니다. 예를 들어,Propagation.REQUIRES_NEW
은 새로운 트랜잭션을 시작합니다.isolation
: 트랜잭션 격리 수준을 설정합니다. 이는 동시에 여러 트랜잭션이 실행될 때 어떻게 격리될 것인지 결정합니다.timeout
: 트랜잭션이 실행되는 최대 시간을 설정합니다.
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED, timeout = 100)
public void addUser(User user) {
userRepository.save(user);
}
}
예외와 트랜잭션 롤백
@Transactional
어노테이션은 rollbackFor
와 noRollbackFor
속성을 통해 예외가 발생했을 때 트랜잭션이 어떻게 처리될지 정의할 수 있습니다.
@Transactional(rollbackFor = {CustomException1.class, CustomException2.class})
public void addBookWithCustomExceptions(Book book) {
try {
bookRepository.save(book);
// Do something that might throw an exception
} catch (CustomException1 | CustomException2 e) {
// Handle the exception
}
}
이 예제에서는 CustomException1
또는 CustomException2
가 발생하면 트랜잭션이 롤백되도록 설정되어 있습니다.
트랜잭션 로그 확인
트랜잭션의 로그를 확인하는 것은 디버깅에 아주 유용합니다. Spring Boot에서는 다음과 같이 속성을 설정하여 SQL 로그를 출력할 수 있습니다.
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
이상으로 JPA의 트랜잭션 관리에 대해 더 깊이 알아보았습니다. 다음 포스트에서는 쿼리 최적화와 캐싱에 대해 알아보도록 하겠습니다.
이로써 더 깊은 이해를 위한 실습과 설명을 마치게 되었습니다. 다음 포스트를 기대해주세요!
'IT > 웹개발' 카테고리의 다른 글
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(7) (0) | 2023.09.04 |
---|---|
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(6) (0) | 2023.09.03 |
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(5) (0) | 2023.09.02 |
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(4) (0) | 2023.09.01 |
JPA 프로그래밍 마스터하기: 중급부터 전문가까지 실습을 통한 학습(3) (0) | 2023.08.31 |