inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! Querydsl

조회 API 컨트롤러 개발

init 메서드에 @Transactional

해결된 질문

408

highjune

작성한 질문수 96

0

init() 메서드에

@Transactional 을 넣어주는 이유는 무엇인가요?

 

감사합니다.

java jpa

답변 2

1

David

안녕하세요. highjune님, 공식 서포터즈 David입니다.

init 메서드 내에서 발생하는 데이터베이스의 변경을 하나의 단위(트랜잭션)로 묶고 싶기 때문입니다.

예를 들어, 수십 개의 멤버를 저장하는 중간에 오류가 발생하게 된다면, 하나의 트랜잭션으로 묶여 있는 작업들은 롤백처리가 될 수 있습니다. 만약 트랜잭션으로 묶여 있지 않다면, 마지막으로 저장된 데이터까지는 저장이 되었을테고, 그 이후 데이터는 저장되지 않게 됩니다. 그러면, 어디까지 저장되었는지 데이터를 직접 확인 후 그 이후부터 다시 저장하는 과정을 진행하게 됩니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 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