전체 글 73

JPA 엔티티 어노테이션 가이드: 핵심 어노테이션과 예제 코드 정리

JPA(Java Persistence API)를 사용할 때 엔티티와 관련된 다양한 어노테이션들이 사용된다. 이 어노테이션들은 데이터베이스와의 매핑을 정의하고, 효율적인 데이터 관리를 가능하게 만들어 준다. 본 글에서는 JPA 엔티티에서 자주 사용되는 주요 어노테이션들을 설명하고, 각 어노테이션의 예시 코드와 함께 주요 속성들을 정리해봤다. 이를 통해 JPA 엔티티 설계 시 어노테이션을 더욱 효과적으로 사용할 수 있게 될 것이다.1. @Entityimport javax.persistence.*;// 이 클래스는 JPA에서 관리하는 엔티티임을 나타냅니다.// 해당 클래스는 데이터베이스의 테이블과 매핑됩니다.@Entitypublic class User { // 이 필드는 엔티티의 기본 키로 사용됩니다. ..

SPRING&BOOT/JPA 2024.08.22

JPA 영속성 컨텍스트 이해하기

JPA(Java Persistence API)에서 영속성 컨텍스트(Persistence Context)는 데이터베이스와 애플리케이션 간의 데이터를 관리하는 중요한 개념이다. 이를 이해하기 쉽게 설명하자면, 영속성 컨텍스트는 엔티티 객체들을 담아두는 "가상의 바구니"라고 할 수 있다. 예제 코드와 함께 알아보는 JPA의 핵심 개념1. Entity 저장 - 1차 캐시@Test@DisplayName("1차 캐시: Entity 저장")void test1() { EntityTransaction et = em.getTransaction(); // 트랜잭션 시작을 준비 et.begin(); // 트랜잭션 시작 try { Memo memo = new Memo(); // 새로운 Memo 엔티..

SPRING&BOOT/JPA 2024.08.20

Naming Convention(네이밍 컨벤션)이란

네이밍 컨벤션(Naming Convention)은 코드에서 변수, 함수, 클래스, 파일 등의 이름을 정하는 규칙과 방법을 의미한다. 이 규칙은 코드의 가독성을 높이고 유지보수를 용이하게 하며, 팀 내에서 코드의 일관성을 유지하도록 돕는다. 네이밍 컨벤션은 여러 가지 프로그래밍 언어와 프레임워크에 따라 다를 수 있지만, 기본적인 목표는 코드의 명확성과 일관성을 보장하는 것이다.네이밍 컨벤션의 중요성가독성 향상: 일관된 네이밍 규칙을 사용하면 코드를 읽기 쉽고 이해하기 쉬워진다. 변수나 함수의 이름만 보고도 그 역할을 추측할 수 있다.유지보수 용이: 코드의 일관성을 유지하면, 나중에 코드를 수정하거나 다른 사람이 코드를 이해할 때 유리하다.협업 효율성: 팀 내에서 동일한 네이밍 규칙을 따르면, 코드 리뷰나 ..

ETC 2024.08.19

API 명세서란? API 명세서 작성의 중요성과 방법

API(Application Programming Interface)는 소프트웨어 간에 데이터를 주고받거나 기능을 제공하기 위한 규칙과 도구들의 모음이다. 현대 애플리케이션들은 API를 통해 서로 소통하고, 복잡한 작업을 자동화한다. 이때 중요한 게 바로 API 명세서다. API 명세서란?API 명세서는 API를 이해하고 사용할 수 있도록 작성된 문서다. API의 기능, 엔드포인트, 요청과 응답 형식, 인증 방식, 오류 처리 방법 등을 담고 있다. 쉽게 말해, API를 사용하기 위한 모든 정보를 깔끔하게 정리한 청사진 같은 거다.API 명세서를 통해 개발자들은 API를 어떻게 설계하고 구현할지 가이드라인을 얻을 수 있고, 사용자들은 API를 어떻게 활용할지에 대한 명확한 설명을 받을 수 있다.API 명세..

SPRING&BOOT 2024.08.18

Path Variable과 Request Param

웹 개발에서 클라이언트가 서버에 데이터를 전달하는 방법에는 여러 가지가 있다. 그 중에서 Path Variable과 Request Param은 자주 사용하는 방법인데, 이 두 가지는 특정 데이터를 전달하고 처리하는 방식에서 차이가 있다. 이번 글에서는 Path Variable과 Request Param을 사용하는 이유, 사용 방법, 장단점, 그리고 이 둘의 차이점을 살펴보겠다.1. 왜 사용하는가?Path VariablePath Variable은 URL 경로의 일부로 데이터를 전달할 때 사용한다. 주로 리소스의 식별자(예: 사용자 ID, 상품 ID 등)를 전달하기 위해 사용된다.예시: http://example.com/users/123여기서 123이 Path Variable로, 이 값으로 특정 사용자 데이..

SPRING&BOOT 2024.08.15

IoC (제어의 역전) 이해하기

1. IoC(제어의 역전)란?IoC(Inversion of Control, 제어의 역전)는 소프트웨어 디자인 원칙 중 하나다. 제어의 역전이란, 프로그램의 흐름 제어 권한을 개발자가 아닌 프레임워크나 외부 컨테이너가 담당하는 것을 말한다.2. IoC의 기본 원리IoC의 핵심 원리는 의존성 주입(Dependency Injection)이다. 의존성 주입이란, 객체가 자신이 필요한 다른 객체를 직접 생성하는 대신 외부에서 주입받는 방식이다. 이로 인해 객체 간 결합도가 낮아지고, 유연성과 재사용성이 높아진다.(DI 관련 글 : https://jki09871.tistory.com/55) 3. IoC의 예시3.1 전통적인 방식class Engine { public void start() { Sy..

SPRING&BOOT 2024.08.13

의존성 주입 (DI, Dependency Injection) 이해하기

**의존성 주입 (Dependency Injection, DI)**은 소프트웨어 개발에서 객체 간의 의존성을 관리하는 방법 중 하나다. 스프링 프레임워크와 같은 현대적인 프레임워크에서는 DI를 통해 객체의 생성과 의존성 관리를 자동으로 처리할 수 있다.DI란 무엇인가?DI는 객체가 필요로 하는 다른 객체(종속성)를 외부에서 주입해주는 패턴이다. 객체가 스스로 종속성을 생성하지 않고, 외부에서 제공받기 때문에 코드의 결합도를 줄이고 유연성을 높인다.DI의 주요 개념1. 의존성 (Dependency)의존성은 객체가 동작하기 위해 필요한 다른 객체를 의미한다. 예를 들어, OrderService가 OrderRepository를 필요로 하는 경우, OrderRepository가 의존성이다.2. 주입 (Injec..

SPRING&BOOT 2024.08.13

3 Layer Architecture

스프링 프레임워크를 사용할 때, 3 Layer Architecture를 적용하면 애플리케이션의 구조가 더 명확하고 유지보수하기 쉬워진다. 이 아키텍처는 애플리케이션을 세 가지 주요 계층으로 나눈다:프레젠테이션 계층 (Presentation Layer)비즈니스 로직 계층 (Business Logic Layer)데이터 계층 (Data Layer)각 계층의 역할1. 프레젠테이션 계층 (Presentation Layer)사용자와 애플리케이션 간의 인터페이스를 담당. 스프링에서는 컨트롤러(Controller)를 통해 구현된다. 사용자 요청을 처리하고, 비즈니스 로직 계층과 상호작용하여 필요한 데이터를 모델에 담아 뷰(View)에 전달한다.스프링 애너테이션: @Controller, @RestController예시:..

SPRING&BOOT 2024.08.12

MVC 디자인 패턴

MVC 디자인 패턴: 입문자를 위한 안내서MVC란 무엇인가요?MVC는 Model-View-Controller의 약자로, 소프트웨어 개발에서 자주 사용되는 디자인 패턴입니다. 이 패턴은 애플리케이션을 세 가지 주요 구성 요소로 나누어, 각 구성 요소가 특정 역할을 맡도록 설계됩니다. 이렇게 나누는 이유는 코드의 구조를 명확히 하고 유지보수를 쉽게 하기 위함입니다.1. Model (모델)모델은 애플리케이션의 데이터와 그 데이터에 대한 로직을 담당합니다. 예를 들어, 사용자의 정보를 저장하거나 데이터베이스와 상호작용하는 작업이 모델의 역할입니다. 모델은 애플리케이션의 상태를 표현하며, 뷰와 컨트롤러로부터 독립적으로 동작합니다.역할데이터 처리비즈니스 로직 구현데이터베이스와 상호작용2. View (뷰)뷰는 사용자..

SPRING&BOOT 2024.08.09

그레이들(Gradle)이란?

스프링(Spring) 프레임워크로 개발을 시작하게 되면, 많은 새로운 도구와 개념들을 접하게 됩니다. 그 중에서도 **그레이들(Gradle)**이라는 도구는 개발 과정에서 자주 사용되는 중요한 도구 중 하나입니다. 이 글에서는 그레이들이 무엇인지, 그리고 스프링 프로젝트에서 어떻게 활용하는지 쉽게 설명해드리겠습니다.1. 그레이들이란 무엇일까?**그레이들(Gradle)**은 여러분이 작성한 코드를 자동으로 처리해주는 빌드 자동화 도구입니다. 예를 들어, 여러분이 코드를 작성한 후에는 컴퓨터가 이해할 수 있는 형태로 변환(컴파일)하고, 테스트하고, 실제로 작동 가능한 프로그램으로 만들어야 합니다. 그레이들은 이 모든 과정을 자동으로 처리해주기 때문에, 개발자는 복잡한 과정을 일일이 신경 쓰지 않아도 됩니다...

SPRING&BOOT 2024.08.09