공부66 @Transactional 에 대하여 0. 들어가며 Spring에서 비즈니스 로직을 구현할 때 무조건 메서드마다 @Transactional을 붙여서 사용했다. 그런데 의문이 들었다. @Transactional 내부 동작이 어떻게 돌아가는지, 왜 메서드마다 붙여야 하는지, 나는 이걸 왜 쓰는지도 모르면서 자연스럽게 쓰고 있는지...!! 이제는 알아야 할 때가 왔나보다. 그래서 이번에는 @Transactional을 파헤쳐보려고 한다. Let's go~ 1. 트랜잭션(Transaction)이란?일단, DB에서의 트랜잭션에 대해 간단히 알고 넘어가보자!1-1. 트랜잭션이란 무엇인가?데이터베이스 트랜잭션은 DB의 상태를 변경시키기 위해 수행하는 작업의 논리적 단위를 의미한다. 좀 더 쉽게 말하자면, 한 꺼 번에 수행되어야 할 여러 쿼리문을 하나의 트.. 2025. 6. 3. GC(Garbage Collectoin)에 대하여 0. 들어가며JVM을 공부하던 도중 실행 엔진에 속한 GC가 어떻게 동작하는지 궁금해졌다. JVM의 Heap 영역도 여러 영역으로 나뉘게 되어 생각보다 복잡하였다. 그래서 GC가 어떻게 Heap 메모리를 관리하는지 자세히 파헤쳐보려고 한다. 가비지 컬렉션(1,2)이 무엇인지, 어떻게 동작하는지(3, 4), GC 알고리즘(5), 마지막으로 GC 튜닝(6)을 간략하게 알아보고자 한다. Let's Go~!!(GC에 대한 개념이 처음이라면 유튜브로 먼저 찾아보는 것을 추천합니다. 하단에 참고 링크 있음.)1. GC(Garbage Collection)란?가비지 컬렉션(Garbage Collection, GC)은 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메.. 2025. 5. 22. Java - Immutable Object(불변 객체) Java를 공부하다 보면 '불변 객체' 라는 말을 들어봤을 것이다. 불변 객체가 무엇인지 알아보자! 1. Immutable이란?Immutable은 '불변의, 변경할 수 없는' 이라는 뜻을 가지고 있다. 객체 지향 프로그래밍에서 불변객체(Immutable object)는 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 대표적으로 String, Boolean, Integer, Float, Long 등이 있다. 예를 들어, String a = "apple" 에서 a = "banana"로 재할당이 가능하다. a가 참조하고 있는 heap 영역의 객체가 바뀌는 것이지 heap영역에 있는 값이 바뀌는 것이 아니다. 즉, 값이 변경되는 것이 아니라 새로운 객체를 만들고 그 객체를 a가 참조하게 하는 것이다. 이렇게 .. 2025. 4. 20. 데이터베이스 - 인덱스에 대해서 1. 인덱스란?데이터베이스 인덱스(index)는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블에 저장된 데이터의 검색 속도를 향상시키기 위한 자료구조이다. 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해 사용한다. (빠르게 정렬(order by)하거나 그룹핑(group by)하기 위해서)1-1. Index를 쓰는 이유만약, Index를 사용하지 않게 되면 어떻게 될까? Index를 사용하지 않으면 데이터를 검색할 때 전체 테이블을 스캔(full scan)을 하게 된다. 만약 데이터가 1억에 있으면 O(N)의 시간복잡도로 1억 번을 탐색하게 된다. 하지만 Index를 사용하게 되면 검색 대상 레코드의 범위를 줄일 수 있다. 이는 대량의 데이터를 다루는 경우 데이터 검색 속도를 크게 향상시.. 2025. 4. 16. 데이터베이스 - 개념 총정리 1. 데이터베이스란?1-1. DataBase vs DBMS vs DB System Database(DB) : 관련있는 데이터들의 조직화된 집합 DBMS(DataBase Management Systems) : DB에 저장된 데이터가 일관되고 무결한 상태로 유지되도록 관리하는 시스템 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템 ex) Postgre SQL, MySQL, Oracle, ... DB System : DB와 DBMS를 이용해 조직에 필요한 정보를 제공해주는 전체 시스템 Database + DBMS + 연관된 applications 1-2. 데이터베이스 특징실시간 접근성(Real-Time Accessibility) : 비정형적인 질의(조회)에 대하여 실시간 처리에 .. 2025. 4. 15. [Spring boot] Refresh Token을 Redis에 저장하는 이유 1. 들어가며현대 웹 애플리케이션에서는 사용자 인증과 인가가 매우 중요합니다. 특히, 무상태(stateless) 방식의 인증 시스템이 선호됨에 따라 JWT(Json Web Token)가 널리 사용되고 있습니다. 그러나 JWT의 특성상 토큰이 만료되기 전까지는 강제로 무효화할 수 없다는 단점이 존재합니다. 이를 보완하기 위해 많은 시스템이 Refresh Token을 사용하여 사용자 세션을 효율적으로 관리하고 있습니다.일반적으로 Refresh Token은 지속성이 보장되는 데이터 저장소, 즉 디스크 기반의 데이터베이스에 저장하는 방식이 흔히 사용됩니다. 하지만 데이터베이스는 동시성 제어와 높은 읽기/쓰기 트래픽 처리에 한계가 있어, 성능과 확장성 면에서 문제가 발생할 수 있습니다.이러한 문제를 해결하기 위해.. 2025. 3. 14. [Spring boot] filter와 interceptor 1. 들어가며Spring 기반의 웹 애플리케이션을 개발하다 보면 요청과 응답을 가로채 특정 로직을 수행해야 하는 경우가 많습니다. 이러한 역할을 수행하는 대표적인 기능이 Filter와 Interceptor입니다.이번 프로젝트를 진행할 때, 로그인 인증 부분을 개발하면서 Filter를 사용하게 되었습니다. 하지만 공부하는 도중 Filter와 Interceptor의 차이가 무엇이며, 어떤 상황에서 사용해야 하는지 궁금하여 블로그를 작성하게 되었습니다.이 글에서는 Filter와 Interceptor의 개념과 차이점을 정리하고, 각각 언제 사용해야 하는지에 대해 알아보겠습니다. 2. Filter와 Interceptor의 개념과 동작 방식Spring 웹 애플리케이션에서 클라이언트의 요청을 가로채는 대표적인 방법은.. 2025. 3. 14. HTTP Basic 인증 방식 HTTP Basic 구성인증 프로세스가 실패했을 때, 특정 비즈니스 로직을 수행하도록 구현하려면 어떻게 해야 할까?인증 과정에서 클라이언트로 반환하는 값의 일부를 설정하기 위해서는 어떻게 해야 할까?[SecurityFilterChain을 설정]HttpSecurity를 파라미터로 받음HttpSecurity의 httpBasic을 설정이 방식을 활용하면 인증 방식과 관련된 일부 구성을 설정할 수 있음 HttpSecurity기본 HTTP Basic 설정을 하기 위해서는 Customizer.withDefaults()를 사용하면 됨만약 realm 이라고 하는 인증 영역을 설정하고 싶은 경우에는 httpBasic의 속성을 활용하면 됨. => 401 Unauthorized가 되게끔 API를 호출하면 Bas.. 2025. 1. 1. 이전 1 2 3 4 ··· 9 다음