개발 기록
211122 TIL (@Transactional,예약어) 본문
스프링 CRUD를 연습해보다가 서비스코드에 트랜잭셔널 어노테이션이 왜 붙는지 몰라서 찾아봤다.
트랜잭션은 ! 단일 작업 단위로 취급되는 시리즈 조치라고 한다 번역된 걸 봐서 어색한 단어이긴한데
블로그에서 쉬운 말로 보면 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들.
아무튼 그래서 단일 트랜잭션에는 여러 작업이 있지만 그룹으로 모두 실패하거나 그룹으로 다 완료되어야 한다.
그림으로 보면 티켓을 사고 좌석 예매하는 이 두개의 단일 작업이 둘 중에 하나만 되는 것이 아니라 둘다 완료되야 커밋되어 db에 저장된다는 것 같다. 예약 트랜잭션이라고 한다면 두 단계가 단일 작업 단위로 수행되고 둘다 완전히 완료 되거나 그룹이 롤백될 떄 실패하도록 해야 한다.
(++ 롤백은 데이터베이스에서 업데이트에 오류가 발생할 때, 이전 상태로 되돌리는 것을 말한다. / 작업 중 문제가 발생했을 때, 트랜젝션의 처리 과정에서 발생한 변경 사항을 취소하고, 트랜젝션 과정을 종료시킨다. )
그래서 @Transactional을 붙이게 되면 해당 클래스나 메소드를 트랜잭션 관리할 수 있게 된다.
비즈니스 로직에 왜 트랜잭션을 사용하는지 조금 알 것 같다. 중간에 어떤건 되고 어떤건 안되면 꼬이니까 될꺼면 아예 안 되는게 맞겠다.
서버 실행 오류 !
엔티티 클래스 테이블 생성하는데에서 오류가 났다. 찾아보니 변수명이 예약어면 에러가 뜬다.
변수명을 limit 으로 한게 있는데 limit은 SQL 예약어라고 한다. 고치니 해결 !(++ 예약어 : 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어들 )
참고자료
'TIL' 카테고리의 다른 글
211124 TIL ( responesDto ) (0) | 2021.11.25 |
---|---|
211124 TIL ( 스프링 S3 파일 업로드) (0) | 2021.11.25 |
211121 WIL (0) | 2021.11.21 |
211120 구현테스트(1119) 복습 (0) | 2021.11.20 |
211118 타임어택(1001) 스프링으로 바꾸기 (0) | 2021.11.18 |