inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

제미니의 개발실무 - 커머스 백엔드 기본편

조회 메서드에서 @Transactional(readOnly=true) 질문

2

bebe

작성한 질문수 14

0

안녕하세요 재민님!

강의를 들으면서 코드베이스를 보니, 조회 메서드에는 대부분 @Transactional(readOnly=true)을 걸지 않으시더라고요. (물론 findById() 같은 건 Spring Data JPA 내부에 알아서 걸려있긴 하지만요)

예를 들어서,

fun findByCategory(categoryId: Long, offsetLimit: OffsetLimit): Page<Product> {
        val categories = productCategoryRepository.findByCategoryIdAndStatus(categoryId, EntityStatus.ACTIVE, offsetLimit.toPageable())
        val products = productRepository.findAllById(categories.content.map { it.productId })
            .map {
                Product(
                    id = it.id,
                    name = it.name,
                    thumbnailUrl = it.thumbnailUrl,
                    description = it.description,
                    shortDescription = it.shortDescription,
                    price = Price(
                        costPrice = it.costPrice,
                        salesPrice = it.salesPrice,
                        discountedPrice = it.discountedPrice,
                    ),
                )
            }
        return Page(products, categories.hasNext())
    }

productCategory를 조회하는 시점의 스냅샷과 product를 조회하는 스냅샷이 위 케이스에선 일치하지 않아도 별 문제가 생기지 않겠지만, 때로는 정합성과 같은 이유로 같은 시점의 스냅샷을 유지해야 하는 경우도 있을 것 같다는 생각이 들었습니다!


물론 이는 @Transactional 뿐만 아니라 DB 격리수준까지 엮인 문제라, 단순히 @Transcational의 판단 기준으로만 보기는 어렵지만, 조회 시점에 @Transactional(readOnly=true) 를 사용하는 것에 대한 재민님만의 기준이 있는지 궁금합니다!

kotlin spring-boot 도메인 dbms/rdbms backend

답변 0

해당 결제 부분을 포폴에서 테스트 api를 적용에 대한 궁금증

0

37

0

아무도 모르게 책 내시면 모르실 줄 알고!!

1

107

2

개념과 격벽에 대한 이해를 팀과 공유하고 합의하는 방법

1

117

2

페이징 처리에서 offset/limit에 대한 질문

1

104

1

usecase 사용 기준

1

121

2

궁금한점이 여러개 생겼습니다.

1

142

1

다양한 관점의 코드 경험을 위해 개선하지 않은 코드

1

114

1

histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/

1

92

2

SettlementTargetRepository Jquery 질문

1

98

2

부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?

1

117

2

엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??

1

125

2

제미니님 안녕하세요!

1

131

2

개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조

1

147

2

프로덕트와 프로덕트카테고리 사이의 삭제 정책

1

135

2

새로 개발한다면 구현 순서

1

198

1

의존 방향에 대한 고민

1

179

2

어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?

1

146

2

OrderKeyGenerator 인스턴스화 generate() 질문

1

123

1

외부 API 통합 시 데이터 제어 범위 설계 질문

1

137

1

PG 결제 승인 로직

1

207

2

QnA에서 Join 필드 표현법

1

144

1

결제서비스 콜백 동시성문제 가능성

1

181

2

굿

1

146

1

도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법

1

189

2