REST API란REST API(Representational State Transfer Application Programming Interface)는 네트워크 상에서 자원을 요청하고 조작하기 위한 아키텍처 스타일입니다. REST API는 주로 HTTP 프로토콜을 기반으로 하며, 클라이언트와 서버 간의 통신을 단순하고 효율적으로 수행할 수 있도록하는 표준화 된 약속입니다. REST API의 주요 특징무상태성 (Statelessness): 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다. 모든 요청에는 필요한 모든 정보가 포함되어 있어야 합니다.클라이언트-서버 구조: 클라이언트와 서버는 서로 독립적으로 동작하며, 클라이언트는 요청을 보내고 서버는 그에 대한 응답을 제공합니다.자원 기..
JPA
💡JPA는 객체지향적 접근 방식입니다.SQL은 데이터베이스의 테이블 간 관계를 정의하는 언어입니다. 테이블과 테이블의 관계는 외래 키를 통해 설정되며, 주로 데이터베이스 관점에서 관리됩니다.JPA는 객체 간의 관계를 정의하는 자바의 ORM(객체-관계 매핑) 기술입니다. JPA에서는 클래스와 객체를 사용해 테이블과 데이터 간의 관계를 표현합니다.중요한 차이점은 SQL은 테이블 간의 관계를 직접 정의하는 반면, JPA는 객체지향적인 관계를 통해 테이블 간의 관계를 간접적으로 정의한다는 점입니다. gradle 확인 plugins { id 'java' id 'org.springframework.boot' version '3.2.10' id 'io.spring.dependency-management' versi..
영속성 컨텍스트(Persistence Context)란, 엔티티 객체들을 관리하고, 데이터베이스와의 상태를 동기화하는 일종의 저장소입니다.쉽게 말해, 애플리케이션이 실행되는 동안 데이터베이스에서 가져온 엔티티 객체들을 임시로 보관해 두는 메모리 공간입니다. 이 공간에 있는 객체들은 "영속 상태"로 관리되며, 이 상태에 있는 동안 엔티티 객체의 변화는 자동으로 데이터베이스에 반영됩니다.즉, 이것이 있기 때문에 데이터베이스에서 효과적으로 데이터를 가져올 수 있고, 엔티티를 편하게 사용할 수 있습니다.핵심 키워드영속성 컨텍스트: 엔티티 객체를 관리하고, 데이터베이스와 동기화하는 임시 저장소.영속 상태: 영속성 컨텍스트에 의해 관리되는 상태, 데이터베이스와의 동기화가 이루어짐. 추가적인 설명을 한다면 영속성 컨..
JPA와 하이버네이트에 대한 기본 개념을 확인했다면 다음으로 엔티티 매니저와 영속성 컨텍스트에 대한 개념을 알아보자. 학습 키워드 정리엔티티(Entity): 데이터베이스 테이블과 매핑되는 자바 클래스입니다.엔티티 매니저(Entity Manager): 엔티티의 생명주기를 관리하며, CRUD 작업을 수행합니다.엔티티 매니저 팩토리(Entity Manager Factory): 엔티티 매니저를 생성하는 팩토리로, 스프링 부트 애플리케이션에서 한번만 생성됩니다. 코드 상에서의 엔티티 선언 형태 @Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Str..
DBMS에 여러 종류가 있듯이, ORM에도 여러 종류가 있습니다. 자바에서는 JPA(Java Persistence API)를 표준으로 사용합니다. 즉, JPA는 자바 진영에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스입니다. 그러나 실제로 DB와 상호작용하려면 이 인터페이스를 구현한 구체적인 도구가 필요합니다. 그 대표적인 구현체로는 Hibernate가 많이 사용됩니다. Hibernate는 JPA 스펙을 구현한 자바용 ORM 프레임워크로, 스프링 부트 프로젝트에서 ORM을 구현할 때 자주 사용되는 도구입니다.JPA(Java Persistence API):자바 객체와 관계형 데이터베이스를 연결하여 데이터를 관리하는 표준 API입니다. JPA는 객체 지향 도메인 모델과 데이터베이스 간의 중간 역..
ORM(object-relational mapping)은 자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법입니다. 예를 들어, RDBMS에 name과 grade라는 컬럼에 각각 '고길동'과 '3'이라는 값이 들어있다고 생각해봅시다. 이 값을 자바 코드에서 사용하려면 JDBC API를 포함한 다양한 설정과 사전 지식이 필요합니다. 또한, SQL에 대한 공부도 필수적입니다. 하지만 ORM을 사용하면 데이터베이스에 존재하는 값들을 마치 자바 객체처럼 사용할 수 있습니다. 쉽게 말해, SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근하여 값을 받아와 사용할 수 있습니다. 즉, 객체와 데이터베이스를 자바 언어로만 다룰 수 있게 하는 기술이 바로 ORM입니다. 물론 이 기술은 자바뿐만 아니라 다양한 언어에..
💡 학습 목표@DeleteMapping 이해@PathVariable 사용@RequestParam 사용 package com.tenco.demo_v1.controller;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.DeleteMapping;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestParam;import org.sprin..
💡 학습 목표PUT 방식에 이해 및 실습DTO 만들어 보기 PUT 방식은 HTTP 메서드 중 하나로, 리소스를 생성하거나 업데이트할 때 사용됩니다. 주로 RESTful API에서 특정 리소스를 완전히 대체하거나 수정할 때 사용됩니다. 주요 특징전체 업데이트:PUT 요청은 클라이언트가 서버에 특정 리소스의 전체 데이터를 보내 해당 리소스를 완전히 대체하거나 새로 생성하는 요청입니다. 즉, 리소스의 일부가 아닌 전체 데이터를 전송하여 갱신합니다.멱등성:PUT 요청은 멱등성을 가집니다. 즉, 동일한 요청을 여러 번 보내도 결과가 동일합니다. 예를 들어, 동일한 데이터를 PUT 요청으로 여러 번 보내도 리소스 상태는 변하지 않습니다.리소스 식별:PUT 요청은 URL을 통해 업데이트할 리소스를 명확히 식별..
💡 학습 목표JSON 이해POST 주소 맵핑, @RequestBody를 Map 구조로 설정JSON 형식을 만들고 POST 방식으로 데이터 보내기DTO 만들어서 사용해보기@JsonProperty 사용해 보기스네이크 케이스와 카멜케이스 구분 💡 JSON 데이터 타입 확인문자열 ("name": "John")숫자 ("age": 30)불리언 ("isStudent": false)객체 ("address": { "city": "New York", "zipCode": "10001" })배열 ("hobbies": ["reading", "traveling", "swimming"])null ("middleName": null) { "name": "John", "age": 30, "isStudent": false,..
💡 학습 목표REST API 기반으로 주소 맵핑 처리GET 방식에 주소 맵핑클라언트에서 보낸 값을 받는 방식에 이해 응답에 이해Path Variable 방식으로 값을 보내거나 받는 방식에 이해Query Parameter 방식으로 값을 받는 방법 이해 key=value 구조 데이터 파싱 처리 Map 사용 방식 구조 처리 Dto 객체를 만들어서 처리 💡 멱등성(Idempotency)이란 같은 작업을 여러 번 수행해도 결과가 달라지지 않는 성질을 의미합니다. 이 개념은 특히 HTTP 메서드나 데이터베이스 연산에서 자주 사용됩니다.멱등성을 가짐 (GET, PUT, DELET ) 비 멱등성을 가짐 (POST)멱등성의 의미?안정성: 멱등성을 가진 연산은 중복 요청에 대해 안전합니다. 네트워크 문제로 인해 동일..