pgjdbc 42.7.11 JSONB 반환 타입 변경과 TypeHandler 대응pgjdbc 42.7.11에서 JSONB 컬럼의 반환 타입이 String에서 PGobject로 변경되었습니다. MyBatis 커스텀 TypeHandler를 글로벌 등록하여 기존 코드 변경 없이 호환성을 유지하는 방법을 정리합니다.2026년 5월 6일19 min read
JavaScript 비동기 처리 - 콜백에서 async/await까지JavaScript 비동기 처리의 진화 과정을 정리합니다. 콜백 함수의 한계부터 Promise, async/await까지 단계별로 다룹니다.2026년 3월 20일22 min read
localStorage SWR 캐싱 패턴 - 네트워크 요청 0회를 달성하는 브라우저 캐시 전략브라우저의 localStorage에 데이터를 캐시하고, 해시 비교 기반 SWR(Stale-While-Revalidate) 전략으로 네트워크 요청을 최소화하는 클라이언트 사이드 캐싱 패턴을 소개합니다. 비개발자도 이해할 수 있도록 일상 비유부터 시작하여, 구현 원리까지 단계적으로 설명합니다.2026년 3월 6일19 min read
PostgreSQL WITH RECURSIVE — 재귀 CTE로 트리 구조 탐색하기PostgreSQL의 WITH RECURSIVE를 사용하여 트리·계층 구조 데이터를 단일 쿼리로 탐색하는 방법을 정리합니다. Working Table 동작 원리, UNION vs UNION ALL 선택 기준, 실제 쿼리 개선 사례를 다룹니다.2026년 5월 13일22 min read
Spring @Transactional과 PostgreSQL 트랜잭션 abortPostgreSQL에서 트랜잭션 내 SQL 에러가 발생하면 이후 모든 쿼리가 실패하는 abort 상태를 분석합니다. try-catch가 무력화되는 원인, MySQL과의 차이, REQUIRES_NEW를 활용한 해결법을 정리합니다.2026년 4월 29일18 min read
개발/DatabasePostgreSQL WITH RECURSIVE — 재귀 CTE로 트리 구조 탐색하기PostgreSQL의 WITH RECURSIVE를 사용하여 트리·계층 구조 데이터를 단일 쿼리로 탐색하는 방법을 정리합니다. Working Table 동작 원리, UNION vs UNION ALL 선택 기준, 실제 쿼리 개선 사례를 다룹니다.2026년 5월 13일22 min read
개발/Javapgjdbc 42.7.11 JSONB 반환 타입 변경과 TypeHandler 대응pgjdbc 42.7.11에서 JSONB 컬럼의 반환 타입이 String에서 PGobject로 변경되었습니다. MyBatis 커스텀 TypeHandler를 글로벌 등록하여 기존 코드 변경 없이 호환성을 유지하는 방법을 정리합니다.2026년 5월 6일19 min read
개발/SpringSpring @Transactional과 PostgreSQL 트랜잭션 abortPostgreSQL에서 트랜잭션 내 SQL 에러가 발생하면 이후 모든 쿼리가 실패하는 abort 상태를 분석합니다. try-catch가 무력화되는 원인, MySQL과의 차이, REQUIRES_NEW를 활용한 해결법을 정리합니다.2026년 4월 29일18 min read