[개발 일기] 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() 메서드는 현재 실행 중인 스레드가 특정 다른 스레드의 종료를 기다리도록 하는 메서드이다.  말만 들으면 이해하기 어려우니, 다음 ..
[개발 일기] 2025.03.02 - Thread 조정 (종료)
·
개발 일기
💡 개요오늘은 약 1년 전 유데미에서 수강했던 자바 멀티스레딩의 Thread 종료 기법인 interrupt에 대해 정리해보자.   📕 Thread 종료interrupt의 사전적 의미는 ‘가로막다, 중단하다’ 이다.  말 그대로 interrupt() 메서드는 현재 실행중인 스레드를 중단시켜 종료할 때 사용한다.  스레드 종료 로직이 따로 필요한 이유는 크게 3가지 이다.  스레드는 고정된 리소스(메모리, 커널)를 할당받아야 하고, CPU 시간과 캐시 공간도 사용한다. 따라서 생성한 스레드가 이미 작업을 완료했는데 애플리케이션이 작동중이라면 사용하지 않는 스레드는 정리되어야 하는 것이다.스레드가 작업 도중 응답이 없는 외부 서버에 요청을 계속 보내거나, 내부 문제로 정상적으로 동작하지 않는다면 해당 스레..
[개발 일기] 2025.03.01 - Redis 직렬화
·
개발 일기
💡 개요오늘은 자바 애플리케이션에서 Redis에 데이터를 저장하거나 조회할 때 사용하는 직렬화에 대해 정리해 보자   📕 Redis 직렬화 적용 전자바 환경에서 Redis에 데이터를 저장할 땐 직렬화를 사용해야 한다.  다음은 Redis에 접근할 때 사용하는 RedisTemplate을 설정하는 Redis Confguration 코드이다.  @Configurationpublic class RedisConfig { @Value("${spring.data.redis.host}") private String host; @Value("${spring.data.redis.port}") private int port; @Bean public RedisConnectionFactory..