티스토리챌린지 21

JPA 상속 클래스로 엔티티 중복 코드 제거하기

1. 문제 상황Spring Boot와 JPA를 사용하면서, 여러 엔티티 클래스에 동일한 코드를 반복해서 작성해야 하는 문제가 생겼습니다. 제가 생각한 중복 코드의 문제점은 아래와 같습니다.중복 코드의 문제점:코드 가독성이 떨어지고 관리가 어려움.공통 기능을 수정할 경우, 모든 엔티티 클래스를 일일이 수정해야 함.유지보수 시 실수 가능성이 증가.2. 해결 방법JPA의 상속과 Spring Data JPA Auditing 기능을 사용하면, 이런 중복을 한 번에 해결할 수 있었습니다. 상속을 통해 공통된 필드를 부모 클래스에 작성하고, 이를 상속받는 방식으로 재사용하면 됩니다.3. 해결 과정1) 상속 클래스(BaseTimeEntity) 만들기엔티티 클래스의 공통 필드를 포함하는 부모 클래스를 만들어 볼게요. 이..

문제 및 해결 2024.11.27

Redis란 무엇인가?

현대 웹 애플리케이션은 빠른 응답 속도와 높은 확장성이 필수입니다. 특히, 데이터를 효율적으로 저장하고 읽어야 하는 상황이 많죠. 이런 문제를 해결하는 데 큰 도움을 주는 기술 중 하나가 바로 Redis입니다.이 글에서는 Redis가 무엇인지, 왜 필요한지, Redis의 장단점과 개발자가 알아야 할 핵심 내용을 쉽게 이해할 수 있도록 정리해보았습니다. 😊 edis란 무엇인가?Redis는 "Remote Dictionary Server"의 약자로, 오픈 소스 인메모리 데이터베이스입니다. 데이터를 디스크가 아닌 메모리에 저장하고 읽기 때문에 매우 빠른 데이터 처리가 가능합니다.Redis는 단순한 키-값 저장소를 넘어서, 다양한 자료구조를 지원합니다:문자열(String)해시(Hash)리스트(List)셋(Set..

DB 2024.11.26

데이터베이스 트랜잭션과 ACID: 안정성을 위한 4가지 원칙

데이터베이스는 오늘날 수많은 애플리케이션의 핵심입니다. 특히 여러 사용자가 동시에 데이터를 생성, 읽기, 수정, 삭제(CRUD)하는 환경에서 데이터의 정합성과 안정성을 보장하는 것이 매우 중요합니다. 이때 데이터베이스에서 트랜잭션(Transaction)을 사용할 때 지켜야 하는 ACID 원칙이 등장합니다.이번 글에서는 ACID가 무엇인지, 각각의 요소가 어떤 역할을 하는지, 그리고 실제 프로젝트에서 왜 중요한지 살펴보겠습니다.1. ACID란 무엇인가요?ACID는 데이터베이스 트랜잭션의 4가지 핵심 원칙을 나타내는 약어입니다. 이를 통해 데이터가 신뢰성 있게 저장되고, 처리 과정에서 발생할 수 있는 문제를 예방할 수 있습니다.A: Atomicity (원자성)C: Consistency (일관성)I: Isol..

DB 2024.11.25

DAO와 Repository: 차이점과 함께 사용하는 이유는 무엇일까요?

DAO(Data Access Object)와 Repository는 모두 데이터를 다루는 디자인 패턴으로, 처음 개발을 시작할 때 헷갈리기 쉽습니다. 이 글에서는 두 개념의 차이점과 이름이 다르게 사용되는 이유, 그리고 실제 프로젝트에서의 활용 방법을 간단히 정리해보겠습니다.DAO 패턴: 데이터 접근의 추상화DAO 패턴은 데이터베이스와의 상호작용을 추상화합니다.즉, 데이터베이스의 구조(테이블)를 직접 다루지 않고, 데이터 접근을 전담하는 객체를 만들어 복잡한 쿼리를 숨깁니다.주요 특징데이터베이스 중심: DAO는 데이터베이스 테이블에 초점이 맞춰져 있습니다.SQL 쿼리 사용: 데이터를 읽고 쓰는 작업에 SQL 또는 이를 추상화한 기술(MyBatis, JPA 등)을 사용합니다.단순한 CRUD 작업: 데이터의 ..

IT 2024.11.24

Spring Boot 프로젝트를 GitHub에 업로드하는 방법

이 글에서는 Spring Boot 프로젝트를 Spring Initializr로 생성하고, GitHub에 업로드하는 과정을 상세히 설명하겠습니다. GitHub에 업로드하는 과정에서 IntelliJ IDEA를 사용하며, 커밋 메시지 작성 및 Git 연동에 대한 팁도 포함되어 있습니다. 1. Spring Initializr로 프로젝트 생성하기Spring Boot 프로젝트는 Spring Initializr를 사용하여 쉽게 생성할 수 있습니다. Spring Initializr에 접속하면 아래와 같은 화면이 나타납니다.프로젝트 설정 (아래는 예시)아래와 같이 프로젝트를 설정합니다:Project: Gradle 또는 Maven (개인 선호에 따라 선택)Language: JavaSpring Boot Version: 3...

IT 2024.11.23

메소드??? 함수?? 뭐가 다른거야?

메소드와 함수는 프로그래밍에서 중요한 개념으로, 비슷하지만 사용하는 방식과 맥락에서 차이가 있습니다. 이 차이를 명확히 이해하면 코드 설계와 개발에 큰 도움이 됩니다.1. 함수(Function)란?함수는 특정 작업을 수행하는 코드 블록으로, 독립적으로 호출될 수 있습니다.정의: 일반적으로 클래스나 객체에 속하지 않고, 독립적으로 정의된 코드 블록.언제 사용: 입력(인자)을 받아 처리하고, 결과(출력)를 반환하는 로직을 작성할 때 사용.특징클래스나 객체에 종속되지 않음.독립적으로 동작하며, 데이터나 상태를 보관하지 않음.함수 호출 시, 이름과 전달할 매개변수만 있으면 호출 가능.예제 (Java):// 독립적으로 정의된 함수public static int add(int a, int b) { return..

궁금증 2024.11.22

메시지 브로커: RabbitMQ와 Kafka??

메시지 브로커란?메시지 브로커는 데이터를 주고받는 시스템 간의 "중간 다리" 역할을 합니다.데이터를 보내는 쪽(프로듀서)과 받는 쪽(컨슈머)을 연결해주는 도구입니다.예를 들어, 주문을 처리하는 시스템과 결제를 처리하는 시스템이 있다면, 메시지 브로커가 두 시스템 사이에서 데이터를 안전하게 전달합니다.RabbitMQ와 Kafka: 메시지 브로커의 두 강자 비교RabbitMQ와 Kafka는 서로 다른 방식으로 메시지를 관리하고 전달하는 대표적인 메시지 브로커입니다. 두 시스템은 각각의 강점이 있어, 사용 목적에 따라 적절히 선택할 수 있습니다. 이번 글에서는 RabbitMQ와 Kafka의 차이점과 주요 특징을 쉽게 이해할 수 있도록 설명드리겠습니다.1. RabbitMQ: 작업 큐와 메시지 라우팅에 강한 메시..

IT 2024.11.21

완벽한 세상을 위한 한걸음 패스키란?

안녕하세요! 오늘은 비밀번호 없는 세상을 꿈꾸게 하는 패스키(Passkey) 기술에 대해 알아보려고 합니다. "비밀번호 없는 세상"이 왜 필요한지, 패스키가 어떻게 동작하는지, 그리고 실제 서비스에 어떻게 적용될 수 있는지 간단한 예제와 함께 살펴보겠습니다.왜 비밀번호를 없애야 할까요?비밀번호는 오랜 시간 동안 인증 방식의 중심이었지만, 여러 문제를 안고 있습니다:해킹에 취약:비밀번호가 네트워크를 통해 전달되거나 서비스에 저장될 때 해커의 공격 대상이 됩니다.예측 가능성:복잡한 비밀번호를 기억하기 어려워 대부분 사람이 쉽게 추측 가능한 비밀번호를 사용합니다.재사용 문제:여러 사이트에서 동일한 비밀번호를 사용하면 한 곳에서 유출된 비밀번호로 다른 계정도 해킹당할 위험이 있습니다.피싱 공격:정교한 가짜 사이..

IT 2024.11.20

자바에서의 Optional 사용법 및 NullPointerException 방지

NullPointerException(NPE)은 자바 개발자라면 한 번쯤 경험해본 대표적인 런타임 에러 중 하나입니다. 이 문제는 객체가 null인 상태에서 이를 참조하려 할 때 발생하며, 특히 복잡한 코드에서는 디버깅이 어려울 수 있습니다. 이를 방지하기 위해 자바 8부터 제공된 Optional은 보다 안전하게 코드를 작성할 수 있는 도구입니다. 이번 글에서는 Optional의 개념, 사용법, 그리고 실무에서 어떻게 활용할 수 있는지에 대해 알아보겠습니다. 1. Optional이란 무엇인가?Optional은 자바의 java.util 패키지에 포함된 컨테이너 클래스로, 값이 존재할 수도 있고 존재하지 않을 수도 있는 상황을 표현하기 위해 사용됩니다. 이를 통해 명시적으로 "값이 없을 수 있음"을 코드에 ..

IT 2024.11.19

Hash Set이란?

Hash Set은 프로그래밍에서 데이터를 저장하고 관리하는 효율적인 방법 중 하나로, 주로 고유한 값을 저장하는 데 사용됩니다. 이번 글에서는 Hash Set의 기본 개념, 장점 및 단점, 사용 사례와 함께, 간단한 예제를 통해 Hash Set을 이해하는 데 도움을 드리겠습니다.Hash Set에 대한 개념과 사용법Hash Set은 프로그래밍에서 데이터를 저장하고 관리하는 효율적인 방법 중 하나로, 주로 고유한 값을 저장하는 데 사용됩니다. 이번 글에서는 Hash Set의 기본 개념, 장점 및 단점, 사용 사례와 함께, 간단한 예제를 통해 Hash Set을 이해하는 데 도움을 드리겠습니다.1. Hash Set이란?Hash Set은 중복을 허용하지 않는 데이터 구조로, 보통 Hash Table을 기반으로 구..

코테 2024.11.18