[개발 일기] 2025.03.08 - MySQL과 웹 애플리케이션
·
개발 일기
💡 개요오늘은 SQL 언어를 기반으로 사용되는 MySQL이 왜 웹 애플리케이션에서 자주 사용되는지 정리해 보자.   📕 MySQL이 웹 애플리케이션에서 자주 사용되는 이유MySQL이 웹 애플리케이션에서 자주 사용되는 이유는 크게 빠른 읽기 성능, 호환성 때문이다.   🛠️ 빠른 읽기 성능 웹 애플리케이션은 거의 대부분 요청에 조회 요청이 포함된다.  MySQL은 InnoDB 엔진의 클러스터형 인덱스를 사용하기 때문에 빠른 조회가 가능하다.  그리고 멀티스레드 기반 아키텍처이기 때문에 다중 요청 처리에 유리하다.  여러 명의 클라이언트가 조회 요청을 보낼 경우 각 클라이언트의 요청이 개별 스레드에서 실행된다.   🛠️ 호환성 MySQL은 Java(Spring Framework), Python(Dja..
[개발 일기] 2025.03.07 - Docker 볼륨 설정
·
개발 일기
💡 개요오늘은 Docker 컨테이너 내부 볼륨 설정에 대해 정리해 보자.   📕 Docker 볼륨볼륨이란 서버나 컴퓨터의 파일 시스템에서 데이터를 저장하는 공간을 의미한다.  만약 Docker 컨테이너에 볼륨을 따로 설정하지 않는다면 내부 데이터도 함께 삭제된다.  그렇기 때문에 데이터를 안전하게 유지하기 위해선 Docker 컨테이너의 볼륨은 반드시 알아둬야 할 중요한 기능이다.   🛠️ docker-compose 을 사용한 볼륨 설정 다음은 docker-compose를 사용해 컨테이너를 실행하고 볼륨을 설정하는 코드이다. version: '3.8'services: app: image: app container_name: app-service volumes: - app_d..
[개발 일기] 2025.03.06 - JPQL vs QueryDsl
·
개발 일기
💡 개요오늘은 Spring Framework에서 사용되는 기술인 JPQL과 QueryDsl에 대해 정리해 보자.   📕 JPASpring JPA는 Spring에서 Java Persistence API(JPA)를 더욱 편리하게 사용할 수 있도록 지원하는 모듈이다.  JPA를 사용하면 개발자가 직접 쿼리를 작성하지 않아도 되고, 데이터베이스 테이블과 매핑된 엔티티를 통해 데이터를 다룰 수 있다.  또한, JpaRepository를 활용하면 메서드 호출만으로도 필요한 쿼리를 자동으로 생성하고 실행할 수 있어, 데이터베이스 연동을 더욱 간결하고 효율적으로 처리할 수 있다. public interface MemberRepository extends JpaRepository { Optional findMe..
[개발 일기] 2025.03.05 - 디스크, 파티션, 볼륨 (Docker)
·
개발 일기
💡 개요오늘은 데이터를 저장할 때 사용되는 디스크, 파티션, 볼륨에 대해 정리해 보자.   📕 디스크  디스크는 말 그대로 디스크 형태를 가진 데이터 저장소로 사용되는 컴퓨터 부품이다.  디스크 표면에 자력을 입혀 자기장의 변화를 통해 데이터를 읽고 쓰는 방식으로 작동한다.   📕 파티션  파티션이란 디스크를 여러 개의 독립된 논리적 구역으로 나누고, 나눠진 각각의 구역을 말한다.  파티션을 사용하면 하나의 디스크를 여러 개의 가상 디스크처럼 사용할 수 있다.  운영체제는 하나의 물리적인 디스크일지라도, 파티션으로 분리되어 있으면 각각 다른 디스크로 인식한다.  이를 통해 여러 운영 체제를 하나의 디스크에 설치할 수 있다.  예를 들어, Windows와 Linux를 같은 디스크에 설치하고 부팅 시 ..
[개발 일기] 2025.03.04 - RequestDto에 Getter가 없으면 예외?
·
개발 일기
💡 개요오늘은 자바에서 컨트롤러가 @RequestBody 를 전달받을 때 사용하는 ContollerRequestDto에서 기본생성자, Getter, Setter가 필요한 이유에 대해 정리해 보자.   📕 JacksonJackson은 자바 환경에서 직렬화와 역직렬화를 담당하는 라이브러리이다.  이를 통해 자바 애플리케이션 외부(React 같은 프론트엔드)에서 자바 애플리케이션 내부(Spring 서버)로 JSON 형태의 데이터를 역직렬화(자바 외부 → 자바 내부)할 수 있다.  Jackson이 @RequestBody 를 생성하는 방식은 다음과 같다.  기본 생성자를 사용해 비어있는 객체를 생성한다.JSON에 있는 값을 객체의 멤버 변수에 할당한다.RequestBody 객체가 완성된다.   🛠️ Gett..
[개발 일기] 2025.03.03 - Thread 조정 (동기화)
·
개발 일기
💡 개요오늘은 자바 멀티스레딩의 Thread 동기화 기법에서 사용되는 join() 에 대해 정리해 보자.   📕 Thread 동기화스레드 조정에는 스레드 종료와 스레드 동기화가 사용된다.  스레드 동기화란 여러 스레드가 공유 자원에 동시에 접근할 때 발생하는 문제(경쟁 조건, 데이터 불일치 등)를 방지하기 위한 기법이다.  스레드 동기화엔 많은 기술이 존재한다. (synchronized, ReentrantLock, volatile, wait(), notify() 등)  오늘 정리할 동기화 기술은 join()이다.   🛠️ Thread.join() Thread.join() 메서드는 현재 실행 중인 스레드가 특정 다른 스레드의 종료를 기다리도록 하는 메서드이다.  말만 들으면 이해하기 어려우니, 다음 ..