Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Transaction, @Transactional 본문

JPA

Transaction, @Transactional

Seung__ 2021. 7. 2. 21:03

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