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
- 스프링 핵심 기능
- QueryDSL
- Servlet
- 백준
- AOP
- pointcut
- 스프링
- JPQL
- SpringBoot
- Thymeleaf
- jpa
- 스프링 핵심 원리
- 인프런
- java
- Proxy
- transaction
- http
- Greedy
- Exception
- 그리디
- db
- spring
- JDBC
- 자바
- springdatajpa
- kotlin
- Android
- Spring Boot
- 김영한
- 알고리즘
Archives
- Today
- Total
개발자되기 프로젝트
Transaction, @Transactional 본문
1. Transaction
데이터 베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위.
예를들어 A가 B에게 100만원을 송금한다 할 때. 논리적인 기능은 송금.
송금을 위한 작업은 "A인출+A잔액 업데이트 +B입금+B잔액 업데이트"
즉 어떤 논리적 기능을 위해 query를 connection으로 묶어서 DB에 전달, 에러 발생 시 원래대로 돌려놓는 기능.
2. @Transactoinal
- spring에서 제공하는 선언적 transaction이다. annotaion을 붙이면 해당 method나 class에 transaction이 적용 가능.
- 상위에서 @Transactional로 묶지 않으면 내부에서 만 transaction으로 묶어준다.
save로 예를 들면 자체적으로 @Transactional이 적용되어 있다.
상위에서 @Transactional이 적용되지 않으면 save 각각이 transaction이 된다.
즉 save하자마자 바로 DB에 반영된다.
@Transactional
@Override
public <S extends T> S save(S entity) {
Assert.notNull(entity, "Entity must not be null.");
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
- 지연쓰기? 쓰기지연?
영속성 컨텍스트가 존재함에 따라 jpa의 특징인 "지연쓰기"가 발생한다.
실제로 @Transactional이 존재하면 db에 반영하는 시간을 최대한 늦춤
'JPA' 카테고리의 다른 글
JPQL : 동적 parameter mapping 방법 (0) | 2021.07.09 |
---|---|
JPA/Hibernate 초기화(ddl-auto, initialization-mode 등) (0) | 2021.07.01 |
M : N(다대다) 연관관계 - 2 (0) | 2021.06.22 |
M : N(다대다) 연관관계 - 1 (0) | 2021.06.22 |
N : 1 연관관계 #2 (0) | 2021.06.21 |
Comments