
레포지토리 인터페이스를 만들기인터페이스 선언 방법과, 기본적인 CRUD 기능을 자동으로 제공받기 위한 JpaRepository 상속 구조를 이해한다.JpaRepository의 역할과 계층 구조 이해JpaRepository의 상속 계층(Repository → CrudRepository → PagingAndSortingRepository → JpaRepository)과 각 인터페이스의 역할을 이해한다. 스프링이 레포지토리 구현체를 자동으로 생성하는 개념 이해스프링이 JpaRepository 인터페이스의 구현체를 런타임 시에 자동으로 생성하여 제공하는 방식에 대해 설명할 수 있다. PostRepositorypackage com.example.demo._domain.blog.repository;import ..

회원가입 시스템 설계(도메인 - member, order, config) enum 생성회원 등급(BASIC / VIP)package member;public enum Grade { BASIC, VIP} Member 클래스 생성package member;public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.grade = grade; } // getter, setter public Long getId() { return id; } public void..

스트림 패키지의 구분자바 I/O 스트림데이터를 읽고 쓰는 목적으로 사용됩니다.파일, 네트워크, 메모리 등 다양한 소스에서 바이트나 문자 데이터를 읽거나 쓰기 위한 스트림입니다.InputStream과 OutputStream이 대표적인 I/O 스트림입니다. Stream API와 자바 I/O 스트림은 이름은 비슷하지만, 완전히 다른 개념입니다. Stream API자바 8에서 도입된 중요한 기능 중 하나로, 데이터 컬렉션(자료구조)을 처리할 때 사용되는 강력한 도구입니다.스트림(Stream)은 데이터를 선언적으로 처리할 수 있게 하며, 특히 대용량 데이터 처리 및 데이터 흐름 제어에 매우 유용합니다. Stream API컬렉션(List, Set, Map 등)이나 배열 등의 데이터 소스를 함수형 프로그래밍 스..

스프링 부트와 JPA 프로젝트에서 패키지 구조를 구성하는 트렌드는 도메인 주도 설계(Domain-Driven Design, DDD)의 원칙을 사용하는 사례가 많이 보인다. 이는 애플리케이션의 구조를 기능이나 역할에 따라 나누기보다는, 도메인 중심으로 나누어 애플리케이션의 유지보수성과 확장성을 높이려는 의도나 방식이다. (여기서 도메인은 애플리케이션이 해결하려는 특정 비즈니스 문제나 현실 세계의 문제를 의미한다. 예를 들어, 은행 애플리케이션에서 "계좌", "고객", "거래"는 중요한 비즈니스 개념이며, 이것들이 바로 그 애플리케이션의 "도메인" 이 된다.) DDD 방식의 프로젝트 구조만들어 보기1. 도메인별로 패키지 구성각 도메인에는 그 도메인과 관련된 모든 엔티티, 서비스, 레포지토리, DTO 등이..

REST API (Representational State Transfer Application Programming Interface) 네트워크 상에서 자원을 요청하고 조작하기 위한 아키텍처 스타일 주로 HTTP 프로토콜을 기반으로 하며,클라이언트와 서버 간의 통신을 단순하고 효율적으로 수행할 수 있도록하는 표준화 된 약속입니다. REST API의 주요 특징무상태성 (Statelessness): 각 요청은 독립적이며, 서버는 클라이언트의 상태를 저장하지 않습니다. 모든 요청에는 필요한 모든 정보가 포함되어 있어야 합니다.클라이언트-서버 구조: 클라이언트와 서버는 서로 독립적으로 동작하며, 클라이언트는 요청을 보내고 서버는 그에 대한 응답을 제공합니다.자원 기반: API는 자원(데이터)에 대해 동작하며..

JPA는 객체지향적 접근 방식입니다.SQL은 데이터베이스의 테이블 간 관계를 정의하는 언어입니다. 테이블과 테이블의 관계는 외래 키를 통해 설정되며, 주로 데이터베이스 관점에서 관리됩니다. JPA는 객체 간의 관계를 정의하는 자바의 ORM(객체-관계 매핑) 기술입니다. JPA에서는 클래스와 객체를 사용해 테이블과 데이터 간의 관계를 표현합니다. 중요한 차이점은 SQL은 테이블 간의 관계를 직접 정의하는 반면, JPA는 객체지향적인 관계를 통해 테이블 간의 관계를 간접적으로 정의한다는 점입니다. 객체-관계 매핑(ORM: Object-Relational Mapping)은객체 지향 프로그래밍 언어에서 사용하는 객체 간의 관계를 관계형 데이터베이스의 테이블 간의 관계로 변환하는 과정입니다. JPA는 이러한..

영속성 컨텍스트(Persistence Context)엔티티 객체들을 관리하고, 데이터베이스와의 상태를 동기화하는 일종의 저장소 애플리케이션이 실행되는 동안 데이터베이스에서 가져온 엔티티 객체들을 임시로 보관해 두는 메모리 공간 이 공간에 있는 객체들은 "영속 상태"로 관리되며, 이 상태에 있는 동안 엔티티 객체의 변화는 자동으로 데이터베이스에 반영됩니다.즉, 이것이 있기 때문에 데이터베이스에서 효과적으로 데이터를 가져올 수 있고, 엔티티를 편하게 사용할 수 있습니다. 핵심 키워드영속성 컨텍스트: 엔티티 객체를 관리하고, 데이터베이스와 동기화하는 임시 저장소.영속 상태: 영속성 컨텍스트에 의해 관리되는 상태, 데이터베이스와의 동기화가 이루어짐. 추가적인 설명을 한다면 영속성 컨텍스는 엔티티 매니저가 활용,..

학습 키워드 정리엔티티(Entity): 데이터베이스 테이블과 매핑되는 자바 클래스입니다.엔티티 매니저(Entity Manager): 엔티티의 생명주기를 관리하며, CRUD 작업을 수행합니다.엔티티 매니저 팩토리(Entity Manager Factory): 엔티티 매니저를 생성하는 팩토리로, 스프링 부트 애플리케이션에서 한번만 생성됩니다. 엔티티 선언 형태@Entitypublic class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // 기본 생성자 public User() {} // 생성..

DBMS에 여러 종류가 있듯이, ORM에도 여러 종류가 있습니다.자바에서는 JPA(Java Persistence API)를 표준으로 사용합니다. 즉, JPA는 자바 진영에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스입니다.그러나 실제로 DB와 상호작용하려면 이 인터페이스를 구현한 구체적인 도구가 필요합니다. 그 대표적인 구현체로는 Hibernate가 많이 사용됩니다.Hibernate는 JPA 스펙을 구현한 자바용 ORM 프레임워크로,스프링 부트 프로젝트에서 ORM을 구현할 때 자주 사용되는 도구입니다.요점JPA - 인터페이스하이버네이트 - 구현 클래스 JPA(Java Persistence API)자바 객체와 관계형 데이터베이스를 연결하여 데이터를 관리하는 표준 API 객체 지향 도메인 모델..

ORM(object-relational mapping)자바의 객체와 데이터베이스를 연결하는 프로그래밍 기법 예를 들어, RDBMS에 name과 grade라는 컬럼에 각각 '고길동'과 '3'이라는 값이 들어있다고 생각해봅시다.이 값을 자바 코드에서 사용하려면 JDBC API를 포함한 다양한 설정과 사전 지식이 필요합니다.또한, SQL에 대한 공부도 필수적입니다.하지만 ORM을 사용하면 데이터베이스에 존재하는 값들을 마치 자바 객체처럼 사용할 수 있습니다. 쉽게 말해, SQL을 전혀 몰라도 자바 언어로만 데이터베이스에 접근하여 값을 받아와 사용할 수 있습니다.즉, 객체와 데이터베이스를 자바 언어로만 다룰 수 있게 하는 기술이 바로 ORM입니다.물론 이 기술은 자바뿐만 아니라 다양한 언어에서도 제공됩니다. ..