사이드 프로젝트에 캐시를 적용하며 이것저것 알아보는 시리즈 1. [Spring] 캐시란? + Spring Boot 내장 캐시 알아보기2. [Cache/Spring] EhCache vs Cache2k vs Caffeine 캐시 비교하기3. [Cache/Spring] 내 어플리케이션의 캐시 히트율 알아보기 캐시를 왜 쓰나요? 본격적으로 EhCache와 Caffeine을 비교하기에 앞서, 캐시가 무엇이고 왜 쓰는지 먼저 알아보자. 위키피디아는 캐시를 다음과 같이 정의하고 있다. 데이터를 저장하여 향후 데이터에 대한 요청을 더 빠르게 처리할 수 있도록 하는 하드웨어 또는 소프트웨어 구성 요소.캐시에 저장된 데이터는 이전 계산의 결과이거나 다른 곳에 저장된 데이터의 복사본일 수 있다.ref) https://en...
개요 최근, 이전에 개발했던 사이드 프로젝트를 리팩토링하고 있다. 이것저것 다양한 시도를 해보면서 생각보다 코드가 많이 바뀌었는데, 그 과정에서 멀쩡히 돌아가던 기능이 갑자기 실패하는 이슈가 발생했다 😇 🔫 다른 방법으로 해결할 수도 있었지만 그러면 진 느낌이 들어서 붙잡고 끙끙댔던 코드.. 겨우 찾은 원인은 생각보다 간단했지만, 내가 사용한 어노테이션과 영속성 컨텍스트 동작 원리를 모르면 또 제대로 이해하기 어려운 이슈라고 생각되어 포스팅해본다. (지금도 분해서 앓고 있음) 문제의 코드 코드를 보기 전에 간단히 도메인 컨텍스트를 설명하면 다음과 같다. 카테고리는 하위에 여러 개의 북마크를 가질 수 있고, 북마크는 무조건 하나의 카테고리에 속해야 한다. (즉 일대다 관계) 카테고리를 삭제하면 하위 북마크..
개요 최근에 친구(조킴/특 : 그저빛)랑 얘기하다가 OpenFeign (오픈페인)에 대해 알게 되었다. 최근에는 외부 API 호출 시 RestTemplate이 아니라 OpenFeign을 많이들 이용한다고 하길래, 나도 한 번 알아보고 사용해보기로 했다 🤟 OpenFeign이란?1️⃣ 소개OpenFeign은 원래 Netflix에서 만들고 출시한 Feign이 오픈 소스 프로젝트로 확장된 친구다. 우리가 사용할 건 Spring-Cloud-Feign으로, OpenFeign 프로젝트가 Spring Cloud 생태계에 통합된 것이다. (📌 Netflix Feign -> OSS Feign (OpenFeign) -> Spring Cloud Feign) 근본인 OpenFeign의 공식 github about에 적힌 소개..
개요 나는 Spring을 배운 이래로 항상 JPA를 사용해서 프로젝트를 진행했다. 이력서나 자기소개에도 JPA을 쓸 줄 안다~고 쓰고 다녔고. 그런데 요즈음, 내가 JPA를 잘 이해해서 100% 활용하기보단 관습적인 코드를 죽어라 쓰고 있는 것 같다고 느꼈다 🤔 예를 들자. cascade를 들으면 제일 먼저 생각나는 건 DBMS의 on update, on delete cascade 옵션이다. 하지만 JPA의 cascade가 이들과 동일한 개념이라고 생각하면 아주 곤란해진다. 엄밀하게는 달라! 😇 고런고로 이번 기회에 JPA 영속성 전이 개념을 좀 더 확실히 정리해보려 한다. 영속성 컨텍스트 (persistence context) 이 포스트를 읽으시는 분들 중 영속성 개념이 아직 생소한 분들도 계실 것 같..