23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
꼭 면접셤을 위해서는 아니지만, JPA Propagation과 DB Isolation을 이해하는 것은 프로그래밍에서 매우 중요한 포인트라 정리해 보았습니다 .
| 종류 | 트랜잭션존재 | 트랜잭션미존재 | 비고 |
|---|---|---|---|
| REQUIRED | 기존 트랜잭션 이용 | 신규 트랜잭션 생성 | 기본설정이다 |
| SUPPORTS | 기존 트랜잭션 이용 | 트랜잭션 없이 수행 | |
| MANDATORY | 기존 트랜잭션 이용 | Exception 발생 | 꼭 이전트랜잭션이 있어야 하는경우 |
| NEVER | exception이 발생한다 | 정상적으로 트랜잭션 없이 수행 | 트랜잭션 없을때만 작업이 진행되어야할때 |
| NOT_SUPPORTED | 트랜잭션이 종료될 때 까지 대기한 후 트랜잭션이 종료되고 나면 실행 | 트랜잭션 없이 로직이 수행 | 기존 트랜잭션에 영향을 주지 않아야할때 사용된다. |
| REQUIRES_NEW | 현재 트랜잭션이 종료될 때 까지 대기한 후 새로운 트랜잭션을 생성하고 실행 | 신규 트랜잭션을 생성하고 로직을 실행 | 이전트래잭션과 구분하여 새로운 트랜잭션으로만 처리가 필요할때 사용 |
| NESTED | 현재 트랜잭션에 Save Point를 걸고 이후 트랜잭션을 수행 | REQUIRED와 동일하게 신규 트랜잭션을 생성하고 로직이 수행 | DBMS특성에 따라 지원 혹은 미지원 |
@Transactional(propagation = Propagation.REQUIRED)
public void writeData(Data data) {...}
// or
@Transactional
public void writeData(Data data) {...}
@Transactional(propagation = Propagation.SUPPORT)
public void writeData(Data data) {...}
@Transactional(propagation = Propagation.MANDATORY)
public void writeData(Data data) {...}
@Transactional(propagation = Propagation.NEVER)
public void writeData(Data data) {...}
@Transaction(propagation = Propagation.NOT_SUPPORT)
public void writeData(Data data) {...}
@Transaction(propagation = Propagation.REQUIRES_NEW)
public void writeData(Data data) {...}
@Transactional(propagation = Propagation.NESTED)
public void writeData(Data data) {...}
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
public void writeData(Data data) {...}
@Transactional(isolation = Isolation.READ_COMMITTED)
public void writeData(Data data) {...}
@Transactional(isolation = Isolation.REPEATABLE_READ)
public void writeData(Data data) {...}
@Transactional(isolation = Isolation.SERIALIZABLE)
public void writeData(Data data) {...}
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.