전체 글

Develop/Spring

[Spring Boot/JPA] @Transactional을 썼는데도 Dirty Checking에 실패한다면? (feat. clearAutomatically = true)

개요 최근, 이전에 개발했던 사이드 프로젝트를 리팩토링하고 있다. 이것저것 다양한 시도를 해보면서 생각보다 코드가 많이 바뀌었는데, 그 과정에서 멀쩡히 돌아가던 기능이 갑자기 실패하는 이슈가 발생했다 😇 🔫 다른 방법으로 해결할 수도 있었지만 그러면 진 느낌이 들어서 붙잡고 끙끙댔던 코드.. 겨우 찾은 원인은 생각보다 간단했지만, 내가 사용한 어노테이션과 영속성 컨텍스트 동작 원리를 모르면 또 제대로 이해하기 어려운 이슈라고 생각되어 포스팅해본다. (지금도 분해서 앓고 있음) 문제의 코드 코드를 보기 전에 간단히 도메인 컨텍스트를 설명하면 다음과 같다. 카테고리는 하위에 여러 개의 북마크를 가질 수 있고, 북마크는 무조건 하나의 카테고리에 속해야 한다. (즉 일대다 관계) 카테고리를 삭제하면 하위 북마크..

Develop/Database

[MySQL] MySQL의 아키텍처와 성능 핵심을 알아보자

개요 즐거운 추석..에 갑자기 인덱스에 꽂혔다. 책이며 강의며 막 뒤지면서 듣는데, 이거 고냥 보고 끝낼게 아니라 정리해두면 더 기억에 잘 남겠다 싶어서 블로그도 쓱싹 쓰게 되었다 😄 쓰다보니 내용이 길어져서 이번 포스팅에선 아키텍처와 구조적 특성 위주로 작성하고, 다음 포스팅에서 인덱스와 자료구조를, 그 다음 포스팅에서 인덱스 종류에 대해서 다뤄볼까 한다. (한번 공부해서 포스팅 3개로 우려먹기 ^_____^ v) 그럼 아이엠그라운드 MySQL 아키텍처 시작! MySQL의 아키텍처 MySQL 서버 아키텍처를 이해하면 우리가 작성한 SQL이 어떻게 실행되는지 알 수 있고, 실행 과정을 알면 튜닝 방법을 알 수 있다 🤔 우리가 아무 생각 없이 사용하는 MySQL 안에서 쿼리는 어떻게 처리되고 있을까? 한번..

Develop/Spring

[Spring Boot] 외부 API 호출 도구 OpenFeign : RestTemplate, WebClient와 비교까지

개요 최근에 친구(조킴/특 : 그저빛)랑 얘기하다가 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에 적힌 소개..

Develop/Spring

[JPA] 영속성 전이 (CASCADE)와 고아 객체에 대하여

개요 나는 Spring을 배운 이래로 항상 JPA를 사용해서 프로젝트를 진행했다. 이력서나 자기소개에도 JPA을 쓸 줄 안다~고 쓰고 다녔고. 그런데 요즈음, 내가 JPA를 잘 이해해서 100% 활용하기보단 관습적인 코드를 죽어라 쓰고 있는 것 같다고 느꼈다 🤔 예를 들자. cascade를 들으면 제일 먼저 생각나는 건 DBMS의 on update, on delete cascade 옵션이다. 하지만 JPA의 cascade가 이들과 동일한 개념이라고 생각하면 아주 곤란해진다. 엄밀하게는 달라! 😇 고런고로 이번 기회에 JPA 영속성 전이 개념을 좀 더 확실히 정리해보려 한다. 영속성 컨텍스트 (persistence context) 이 포스트를 읽으시는 분들 중 영속성 개념이 아직 생소한 분들도 계실 것 같..

스껄한우디
호그와트 장학생