diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt
index 6d12fe6..d0c2fe3 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/AudioContentService.kt
@@ -577,6 +577,7 @@ class AudioContentService(
         }
     }
 
+    @Transactional(readOnly = true)
     @Cacheable(
         cacheNames = ["cache_ttl_3_days"],
         key = "'contentRanking:' + ':' +" +
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt
index 5804afd..dd81dfa 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/main/AudioContentMainService.kt
@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Value
 import org.springframework.cache.annotation.Cacheable
 import org.springframework.data.domain.Pageable
 import org.springframework.stereotype.Service
+import org.springframework.transaction.annotation.Transactional
 import java.time.DayOfWeek
 import java.time.LocalDateTime
 import java.time.temporal.TemporalAdjusters
@@ -29,6 +30,7 @@ class AudioContentMainService(
     @Value("\${cloud.aws.cloud-front.host}")
     private val imageHost: String
 ) {
+    @Transactional(readOnly = true)
     fun getMain(memberId: Long, isAdult: Boolean): GetAudioContentMainResponse {
         // 2주일 이내에 콘텐츠를 올린 크리에이터 20명 조회
         val newContentUploadCreatorList = getNewContentUploadCreatorList(memberId = memberId, isAdult = isAdult)
@@ -120,6 +122,7 @@ class AudioContentMainService(
         return GetNewContentAllResponse(totalCount, items)
     }
 
+    @Transactional(readOnly = true)
     @Cacheable(cacheNames = ["default"], key = "'newContentUploadCreatorList:' + #memberId + ':' + #isAdult")
     fun getNewContentUploadCreatorList(memberId: Long, isAdult: Boolean): List<GetNewContentUploadCreator> {
         return repository.getNewContentUploadCreatorList(
@@ -131,6 +134,7 @@ class AudioContentMainService(
             .toList()
     }
 
+    @Transactional(readOnly = true)
     @Cacheable(cacheNames = ["default"], key = "'contentMainBannerList:' + #memberId + ':' + #isAdult")
     fun getAudioContentMainBannerList(memberId: Long, isAdult: Boolean) =
         repository.getAudioContentMainBannerList(isAdult = isAdult)
@@ -180,6 +184,7 @@ class AudioContentMainService(
             }
             .toList()
 
+    @Transactional(readOnly = true)
     @Cacheable(cacheNames = ["default"], key = "'contentCurationList:' + #memberId + ':' + #isAdult")
     fun getAudioContentCurationList(memberId: Long, isAdult: Boolean) =
         repository.getAudioContentCurations(isAdult = isAdult)
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderService.kt
index 6dac0e6..0ca2b85 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderService.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/order/OrderService.kt
@@ -92,6 +92,7 @@ class OrderService(
         )
     }
 
+    @Transactional(readOnly = true)
     fun getAudioContentMainOrderList(memberId: Long, limit: Int): List<GetAudioContentMainItem> {
         return repository.getAudioContentMainOrderList(
             dateTime = LocalDateTime.now(),
diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt
index 8b220b2..da81883 100644
--- a/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt
+++ b/src/main/kotlin/kr/co/vividnext/sodalive/content/theme/AudioContentThemeQueryRepository.kt
@@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.content.theme.QAudioContentTheme.audioContentThe
 import org.springframework.beans.factory.annotation.Value
 import org.springframework.cache.annotation.Cacheable
 import org.springframework.stereotype.Repository
+import org.springframework.transaction.annotation.Transactional
 
 @Repository
 class AudioContentThemeQueryRepository(
@@ -28,6 +29,7 @@ class AudioContentThemeQueryRepository(
             .fetch()
     }
 
+    @Transactional(readOnly = true)
     @Cacheable(cacheNames = ["default"], key = "'activeThemeOfContent:' + ':' + #isAdult")
     fun getActiveThemeOfContent(isAdult: Boolean = false): List<String> {
         var where = audioContent.isActive.isTrue