전체 글

코딩하는 대학생에서 개발자까지
다양한 시각에서 바라본 Java (2)
이번 글에서는 자바를 사용하며 주로 다루게 되는 예외와 자바의 핵심 기능인 리플렉션, 그리고 그 외 기능에 대해 다뤄보겠습니다.1. 예외1. 예외 vs 에러"예외 발생했어요", "에러 발생했어요" 위의 두 문구는 제가 스프링을 개발하며 들었던 말입니다.보통 예외 == 에러라고 생각할 수 있으나, 둘은 천지차이입니다. 예외는 주로 프로그램 실행 중 발생할 수 있는 예상 가능한 문제상황을 말합니다.프로그램의 코드나 문제, 사용자 입력으로 인해 발생하는 오류가 예외죠.Null 객체를 호출하거나 Null 객체의 메서드, 필드에 접근할 때 발생하는 NullPointerException 등이 있습니다. 그에 비해 에러는 시스템 레벨의 심각한 문제를 나타내며 예외에 비해 복구하기 어렵습니다.시스템 자원 부족, 하드웨..
다양한 시각에서 바라본 Java (1)
이번 글에서는 자바의 기초적인 개념에 대해 다뤄보려 합니다. 자바의 장점이 무엇인가요? 1. 객체지향 그로 인해 캡슐화, 상속, 다형성, 추상화라는 장점이 있습니다. 1. 캡슐화캡슐화는 객체 내부의 상세 구현을 감추고 외부에서는 인터페이스를 통해 접근할 수 있도록 하는 것입니다.이를 통해 코드의 유지보수성과 보안을 향상시킬 수 있다는 장점이 있습니다. 오픈소스 기여 활동에서 받은 코멘트를 통해 캡슐화의 중요성을 확인할 수 있습니다.현재 Matcher는 이름과 객체의 타입을 기반으로 비교 작업을 수행하는 로직을 가지고 있습니다. 그러나 이 비교 작업에 필요한 이름이 MatcherOperator라는 외부 객체에 위치해 있는 상황입니다. 이로 인해 Matcher의 내부 구현 세부 사항이 외부로 노출되는 문제가..
TestContainers에 Singleton 적용하기
·Backend/Spring
TestContainers 란?TestContainers는 Docker 컨테이너를 활용하여 실제 서비스와의 통합 테스트를 쉽게 수행할 수 있도록 지원하는 테스트 라이브러리입니다.https://testcontainers.com/ TestcontainersTestcontainers is an opensource framework for providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.testcontainers.com 많은 스프링 사용자들이 Test를 할 때 인메모리 데이터베이스(H2)를 사용하는데 개발, 프로덕..
다양한 시각에서 바라본 JPA
이 글에서는 JPA의 내부 구조에 대해 자세히 다뤄보려 합니다. Spring Boot를 실행시키면 JpaRepository는 어떻게 생성되나요?public interface MemberRepository extends JpaRepository아마 위 코드는 스프링으로 개발하시는 분이라면 한 번이라도 작성해봤을 코드입니다.레포지토리 인터페이스를 정의한 뒤, 제네릭 타입으로 엔티티 클래스와 해당 엔티티의 ID 필드 타입을 지정합니다.이렇게 하면 Spring Data JPA가 자동으로 해당 엔티티에 대한 기본적인 CRUD 작업을 수행하는 구현체를 생성합니다. 분명 MemberRepository는 interface인데 왜 Proxy가 적용됐고 Target Class가 SimpleJpaRepository야? Sp..
왜 Soft Delete에 Redis를 활용했나요? [Redis Soft Delete Pattern]
·왜?
Soft Delete & Hard Delete란?Soft Delete 란?데이터를 실제로 제거하지 않고, 삭제된 것처럼 값을 변경해 논리적으로 삭제를 하는 방식입니다. 예시를 들어서 설명하자면, member 테이블에 isDelete라는 boolean 필드가 있다고 할 때 삭제를 하는 경우 이 필드의 값을 yes로 변경하는 것입니다. 그런 뒤, member를 조회할 때는 isDelete 필드가 false인 필드만 조회를 해서 isDelete 필드가 true인 레코드들은 조회가 되지 않습니다. 이를 논리적 삭제 (Soft Delete)라고 합니다. Hard Delete 란?데이터베이스에서 실제로 객체를 제거하는 방식입니다. Soft Delete를 사용하는 경우만약 유저가 실수로 삭제를 한 경우, 유저는 복구..
다양한 시각에서 바라본 Redis (4) 고급 기능
·Backend/Redis
처음에는 스프링에서 Redis를 어떻게 활용하는지 알아보려 했습니다. 하지만 이 주제가 특정 언어와 프레임워크에 너무 국한될 것 같아 다른 주제로 방향을 바꾸게 되었습니다.  Redis pipelineRedis Pipeline이란 Redis의 명령어들을 일괄로 처리하여 RTT(Round - Trip - Time)를 최적화 하는 방법입니다.  일괄로 처리하는 것과 개별로 처리하는 것을 GET, MGET에 비교해 설명하겠습니다.여러 키를 조회할 때 GET으로 조회를 하게 되면 조회를 할 때마다 RTT가 발생합니다. 하지만 MGET은 한 번의 작업으로 충분해 RTT를 절약할 수 있습니다.RTT (Round Trip Time)이란?네트워크 요청을 시작한 후 응답을 받는데 걸리는 시간을 의미합니다. 쉽게 왕복시간..
코딩하는_대학생
코딩하는 대학생에서 개발자까지