[개발 일기] 2025.03.13 - @BeforeAll
·
개발 일기
💡 개요오늘은 Spring에서 테스트 코드에서 데이터 셋업에 사용되는 @BeforeAll을 정리해 보자.   📕 @BeforeAll@BeforeAll은 테스트 실행 전에 한 번만 실행되는 메서드에 붙이는 어노테이션이다.  주로 테스트에서 반복적으로 사용되는 데이터를 셋업 할 때 사용된다.  @BeforeAll을 사용하려면 해당 메서드를 static으로 선언하거나, 클래스에 @TestInstance(TestInstance.Lifecycle.PER_CLASS) 어노테이션을 추가해야 한다.   🛠️ static 메서드 사용 @BeforeAllstatic void setup() { // 테스트 실행 전 한 번만 실행됨}  static으로 선언하면 테스트 인스턴스가 생성되기 전에 클래스 레벨에서 실행된..
[개발 일기] 2025.03.12 - filter에서 발생하는 예외
·
개발 일기
💡 개요오늘은 Filter에서 발생하는 예외는 어떻게 처리해야 하는지에 대해 정리해 보자.   📕 Filter 예외Filter는 서버에게 요청을 전달하기 전, 인증・인가나 보안과 관련된 작업을 거치는 공간이다.  여기서 서버란 Dispatcher Servlet을 말한다.  그런데 보통 Spring 환경에선 내부에서 발생한 예외를 처리하기 위해 GlobalExceptionHandler를 사용한다.  그리고 GlobalExceptionHandler는 Dispatcher Servlet 내부에 위치한다.   만약 Filter에서 예외가 발생하면 어떻게 될까?  우리는 공통 예외 처리를 위해 정성 들여 GlobalExceptionHandler를 완성했지만, 요청이 Filter 단계에서 예외가 발생하면 Disp..
[개발 일기] 2025.03.11 - compareTo()
·
개발 일기
💡 개요오늘은 자바에서 문자열 비교에 사용되는 compareTo() 에 대해 정리해 보자.   📕 compareTo()compareTo() 란 문자열을 사전순으로 비교할 때 사용되는 메서드이다.  여기서 말하는 사전 순이란? 각 문자열에 있는 문자를 차례대로 아스키코드를 기준으로 비교하는 것이다.  다음은 String s1과 s2 를 비교하는 코드이다. int result = s1.compareTo(s2);  코드 실행 결과는 다음과 같다. 만약 s1과 s2이 같으면 0s1이 s2보다 사전순으로 뒤에 있으면 양수s1이 s2보다 사전순으로 앞에 있으면 음수 그리고 출력되는 수의 절댓값은 두 문자열에서 첫 번째로 다른 문자의 값 차이다.  apple vs banana System.out.println("..
[개발 일기] 2025.03.10 - 날짜 데이터 타입
·
개발 일기
💡 개요오늘은 자바에서 사용되는 날짜를 나타내는 데이터 타입에 대해 정리해 보자.   📕 날짜 데이터 타입 🛠️ Epoch Time Epoch Time는 long 타입을 사용해 1970-01-01 00:00:00 부터 경과할 밀리초를 표현한다. long epochMillis = System.currentTimeMillis();System.out.println(epochMillis); [결과]1741579085872   🛠️ Date Date는 날짜와 시간을 나타내는 클래스이다.  하지만 사람이 쉽게 알아볼 수 있는 형태로 출력되지 않기 때문에 SimpleDateFormat 을 함께 사용해야 한다. Date now = new Date();SimpleDateFormat sdf = new SimpleD..
[개발 일기] 2025.03.09 - InnoDB
·
개발 일기
💡 개요오늘은 어제 정리했던 MySQL의 엔진인 InnoDB에 대해 정리해 보자.   📕 InnoDBInnoDB란 Innovative Database 의 약자로 MySQL의 기본 저장소 엔진이다.  주요 특징으론 모든 MySQL의 바이너리에 내장되어 있다. 그렇기 때문에 별도의 설치 없이 MySQL만 설치하면 자동으로 설치된다.   🛠️ InnoDB 구조  🛠️ InnoDB 특징 PK를 기준으로 클러스터링 InnoDB에서는 기본 키(PK) 값의 순서대로 데이터를 저장한다. CREATE TABLE students ( id INT PRIMARY KEY, -- 기본 키 (PK) name VARCHAR(50), age INT); 만약 데이터가 저장된다면 아래의 표처럼 저장될 것이다. ..
[개발 일기] 2025.03.08 - MySQL과 웹 애플리케이션
·
개발 일기
💡 개요오늘은 SQL 언어를 기반으로 사용되는 MySQL이 왜 웹 애플리케이션에서 자주 사용되는지 정리해 보자.   📕 MySQL이 웹 애플리케이션에서 자주 사용되는 이유MySQL이 웹 애플리케이션에서 자주 사용되는 이유는 크게 빠른 읽기 성능, 호환성 때문이다.   🛠️ 빠른 읽기 성능 웹 애플리케이션은 거의 대부분 요청에 조회 요청이 포함된다.  MySQL은 InnoDB 엔진의 클러스터형 인덱스를 사용하기 때문에 빠른 조회가 가능하다.  그리고 멀티스레드 기반 아키텍처이기 때문에 다중 요청 처리에 유리하다.  여러 명의 클라이언트가 조회 요청을 보낼 경우 각 클라이언트의 요청이 개별 스레드에서 실행된다.   🛠️ 호환성 MySQL은 Java(Spring Framework), Python(Dja..