2023 스프링 세미나 과제 레포
-/src/test/kotlin/week2/PersistenceContextTest.kt
- 영속성 컨텍스트
- 지연 로딩
- 엔티티 캐싱
- 스레드간 공유 X
@Test
fun `영속성 컨텍스트 없이 지연로딩`() {}
@Test
fun `영속성 컨텍스트 안에서 지연로딩`() {}
@Test
fun `스레드 단위의 엔티티 캐싱`() {}
-/src/test/kotlin/week2/SynchronizationTest.kt
@Test
fun `동기화 없이 좋아요 따닥 생성`() {}
@Test
fun `동기화 사용하여 좋아요 따닥 생성`() {}
-/src/main/kotlin/playlist/service/PlaylistLikeServiceImpl.kt
@Service
class PlaylistLikeServiceImpl(
private val playlistLikeRepository: PlaylistLikeRepository,
private val playlistRepository: PlaylistRepository,
) : PlaylistLikeService {
@Synchronized
override fun createSynchronized(playlistId: Long, userId: Long) {
create(playlistId, userId)
}
}
-src/main/kotlin/CacheConfig.kt
@EnableConfigurationProperties(CacheProperties::class)
@Configuration
class CacheConfig(
private val cacheProperties: CacheProperties,
) {
@Bean
fun cache(): Caffeine<Any, Any> {
return Caffeine.newBuilder()
.maximumSize(cacheProperties.size)
.expireAfterWrite(cacheProperties.ttl)
}
}
@ConfigurationProperties("cache")
data class CacheProperties(
val ttl: Duration,
val size: Long,
)
-src/main/resources/application.yaml
cache:
ttl: 10s
size: 100