inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 데이터 JPA

스프링 데이터 JPA 11. 트랜잭션

@Transaction 처리 질문입니다.

309

윤홍찬

작성한 질문수 7

0

@Transaction 을 붙여서, 트랜잭션 처리를 언제 해야하는지 알 수 있을까요? 

검색해보니, 여러 쿼리를 하나의 단위로 실행해야할 때만 붙여서 처리하면 되는 것 같으나 일부 블로그에서는 모든 service의 메소드에 붙이라는 곳도 있는 거 같아서 헷갈립니다ㅠㅠ

따라서 read를 제외한 create, update, delete가 하나라도 있는 service layer의 메소드에 전부 붙여야하는지 궁금합니다. 다음은 update, delete 각자 하나의 쿼리만 수행하는 코드 예시입니다.

public boolean updateBoard(Board board, Long id) {
		Optional<Board> optionalBoard = boardRepository.findById(id);
		if (optionalBoard.isEmpty()) {
			return false;
		}

		Board existingBoard = optionalBoard.get();
		existingBoard.setTitle(board.getTitle());
		existingBoard.setContent(board.getContent());
		boardRepository.save(existingBoard);
		return true;
	}

	public boolean deleteBoard(Long id) {
		Optional<Board> optionalBoard = boardRepository.findById(id);
		if (optionalBoard.isEmpty()) {
			return false;
		}

		boardRepository.deleteById(id);
		return true;
	}

JPA spring java

답변 1

1

백기선

뭐라고 정해져 있는 답같은게 있는게 아니라 필요한 지점에 필요한 트랜잭션 설정을 사용하시면 됩니다. 가령, 서비스에 있는 메소드에서 여러 Repository를 호출해서 어떤 작업을 하는데 그 모든 작업이 한 단위로 처리되어야 한다면 그 서비스 메소드를 @Transactional로 묶으면 되는거죠.

또는 어떤 서비스 계층에서 Repository를 사용해서 데이터를 조회만 한다면 @Transactional(readOnly="true")를 사용해서 write lock을 쓰지 않도록 해서 조금이나마 성능에 잇점을 꽤할 수도 있구요.

DB 트랜잭션에 대한 공부를 하시면 그런 결정을 하는데 좀 더 도움이 될겁니다.

spring boot 2.7.13-SNAPSHOT trace 소문자 로그 안나옴

0

533

1

<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문

0

392

1

comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?

0

407

1

@EnableJpaRepositories 설정을 스프링부트가 어디에서 자동설정하나요?

0

450

0

PersistenceContext 관련 질문드립니다.

0

335

1

지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다

0

338

1

transaction 구간이 길어질 경우의 처리방법 문의드립니다.

0

905

1

docker postgres

0

292

1

Multiple DataSource 사용 시 transaction 관련 질문 드립니다.

0

2908

1

entity 중 null이 아닌 필드만 update 할 방법이 있을까요?

0

1190

1

Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?

0

385

1

엔티티를 상속받는 DTO가 일반적인가요?

1

1847

1

커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.

0

339

1

연관관계 매핑 어떤식으로 해야될지 감이 안잡힙니다.

0

566

4

EntityManager 주입시 Annotation관련 질문드립니다.

0

565

1

클래스 기반 프로젝션 사용 관련 질문

0

560

1

save 메서드 질문드립니다.

0

258

1

복잡한 통계쿼리도 JPA로 가능한가요?

2

5592

1

find 와 get의 차이가 무엇인가요?

0

890

1

실무에서 JPA 할 때 FK로 개발할때 연관관계를 꼭 맺어주어야 하나요?

0

998

1

\dt Did not find any relations.

0

481

1

소스코드는 어디서 볼 수 있을까요?

1

287

1

table 생성과 select 문에 대한 질문

0

174

1

스프링 데이터 RepositoryTest 관련 질문

0

2173

2