init 메서드에 @Transactional
init() 메서드에
@Transactional 을 넣어주는 이유는 무엇인가요?
감사합니다.
답변 2
1
안녕하세요. highjune님, 공식 서포터즈 David입니다.
init 메서드 내에서 발생하는 데이터베이스의 변경을 하나의 단위(트랜잭션)로 묶고 싶기 때문입니다.
예를 들어, 수십 개의 멤버를 저장하는 중간에 오류가 발생하게 된다면, 하나의 트랜잭션으로 묶여 있는 작업들은 롤백처리가 될 수 있습니다. 만약 트랜잭션으로 묶여 있지 않다면, 마지막으로 저장된 데이터까지는 저장이 되었을테고, 그 이후 데이터는 저장되지 않게 됩니다. 그러면, 어디까지 저장되었는지 데이터를 직접 확인 후 그 이후부터 다시 저장하는 과정을 진행하게 됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
init() 메서드에 @Transactional 어노테이션을 사용하는 이유는 주로 데이터베이스 초기화나 특정 작업의 동시성을 보장하기 위해서 입니다. @Transactional 어노테이션을 사용하면 해당 메서드에서 일어나는 데이터베이스 작업이 하나의 트랜잭션으로 묶여서 동시성 문제나 데이터 일관성을 관리할 수 있게 됩니다.
init() 메서드는 보통 어플리케이션이나 프레임워크가 로딩되거나 초기화될 때 자동으로 실행되는 메서드입니다. 이 메서드에 @Transactional 어노테이션을 추가하면, 해당 초기화 작업이 단일 트랜잭션 안에서 실행되어 예외가 발생하면 롤백될 수 있고, 데이터 일관성이 유지될 수 있습니다.
또한, init() 메서드에서 데이터베이스 트랜잭션을 사용하는 것은 애플리케이션의 성능을 최적화하는 데 도움이 될 수 있습니다. 여러 개의 데이터베이스 작업을 한 번에 묶어서 실행하므로, 각 작업마다 트랜잭션을 생성하고 커밋하는 오버헤드를 줄일 수 있습니다.
하지만, @Transactional 어노테이션을 init() 메서드에 사용할 때는 주의해야 합니다. init() 메서드는 주로 애플리케이션 로딩 시 한 번만 실행되므로, 해당 메서드에서 발생하는 예외를 처리하는 방법이 명확해야 합니다.
공식적으로는 스프링에서는 init() 메서드에 @Transactional 어노테이션을 사용하지 않는 것을 권장하고 있으며, 대신 트랜잭션 매니저를 이용해서 트랜잭션을 관리하는 방법을 추천하고 있습니다.
더 자세한 내용이 필요하시면, 스프링 프레임워크의 트랜잭션 관리에 대해 찾아보시는 것을 추천드립니다. 감사합니다.
SpringBoot 4.X에서의 Querydsl 설정
0
92
2
querydsl 오픈소스에 대한 질문
0
74
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
109
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
319
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
71
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
160
1
querydsl sum() 메서드 없어요.
0
160
2
build 디렉터리 생성
0
140
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
114
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
92
1
오타 제보 드립니다.
0
73
2
벌크 연산과 flush, clear
0
76
1
Run As Intellij 로 변경시 Q타입 import 불가
0
89
1
QHello import하기 문제 발생
0
147
2
등록된 함수 보는법(H2Dialect) 질문
0
69
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
199
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
202
1
querydsl 설정 문제
0
222
2
quey dsl 설정부분
0
158
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
89
1
답변부탁드리겠습니다.
0
90
2
(OrderSpecifier)관련 내용 어디있을가요
0
66
1
중급문법 벌크연산에서
0
83
2





