
인덕대학교 A&I 동아리에서 스터디한 내용을 바탕으로 작성하였습니다.
데이터베이스(Database)는 여러 사람이 공유하여 사용할 목적으로
통합 관리되는 데이터의 집합입니다.
즉, 데이터를 단순히 저장하는 공간이 아니라
여러 사용자가 필요할 때 안정적으로 조회하고 활용할 수 있도록 관리하는 시스템이라고 볼 수 있습니다.
어플리케이션 레이어에서 로직에 의해 생성된 특정 값을 저장하고
지속적으로 참조해야 하는 경우가 있습니다.
하지만 어플리케이션이 종료되면 메모리에 저장된 값은 모두 사라지게 됩니다.
이처럼 데이터를 영구적으로 저장하기 위해 데이터베이스가 필요합니다.
또한 특정 클라이언트가 생성하거나 저장한 정보를 서버의 데이터베이스에 보관하면,
다른 클라이언트들도 같은 데이터를 함께 참조할 수 있습니다.
즉, 데이터베이스는 단순 저장뿐 아니라 데이터 공유와 일관성 유지에도 중요한 역할을 합니다.
Spring Boot와 같은 백엔드 환경에서는 다양한 데이터베이스를 사용할 수 있습니다.
예를 들어 다음과 같은 데이터베이스들이 있습니다.
프로젝트의 목적과 환경에 따라 적절한 데이터베이스를 선택해 사용하게 됩니다.
이번 글에서는 Spring Boot에서 자주 함께 사용되는 MySQL을 중심으로 살펴보려고 합니다.
그 전에 데이터를 보다 안전하고 효율적으로 다루기 위해 자주 등장하는
DAO, DTO, VO 개념을 먼저 정리해보겠습니다.
DAO는 Data Access Object의 약자로,
데이터베이스의 데이터에 접근하기 위한 객체를 의미합니다.
DB 접근 로직을 분리하기 위해 사용되며,
데이터를 삽입, 삭제, 조회, 수정하는 기능을 담당합니다.
DTO는 Data Transfer Object의 약자로,
계층 간 데이터 교환을 위한 객체를 의미합니다.
DTO는 비즈니스 로직을 가지지 않는 순수한 데이터 전달 객체이며,
주로 getter, setter 메서드를 통해 값을 전달합니다.
DB에서 가져온 데이터를 Service나 Controller 등 다른 계층으로 전달할 때 사용됩니다.
VO는 Value Object의 약자로,
값 자체를 표현하기 위한 객체입니다.
일반적으로 읽기 전용(Read-Only)의 속성을 가지며,
불변 객체(Immutable Object)로 사용하는 경우가 많습니다.
주로 값을 안전하게 다루기 위해 사용되며, 보통 getter 기능만 제공합니다.
DTO와 VO를 이해하다 보면 Getter와 Setter라는 개념도 함께 보게 됩니다.
Getter와 Setter는 객체 지향 프로그래밍에서
객체의 속성에 접근하거나 값을 변경할 때 사용하는 메서드입니다.
Getter는 객체의 속성(Property) 값을 반환하는 메서드입니다.
Setter는 객체의 속성 값을 설정하거나 변경하는 메서드입니다.
겉으로 보면 직접 값을 다루는 것과 비슷해 보일 수 있지만,
굳이 Getter와 Setter를 사용하는 이유는 분명합니다.
즉, Getter와 Setter는 단순히 값을 꺼내고 넣기 위한 기능을 넘어
객체를 더 안전하게 다루기 위한 장치라고 볼 수 있습니다.

[출처] https://plo-developdiary.tistory.com/62
데이터베이스를 사용하려면 Spring Boot의 전체 데이터 흐름을 이해하는 것이 중요합니다.
그중 앞에서 다루지 않았던 Service, Repository, Entity 개념도 함께 알아보겠습니다.
Service는 엔드포인트의 실제 비즈니스 로직을 처리하는 계층입니다.
Controller가 클라이언트의 요청을 받으면,
그 요청에 필요한 데이터를 Service로 전달합니다.
그리고 Service는 필요한 작업을 수행한 뒤 결과를 다시 Controller에 반환하고,
Controller는 그 결과를 클라이언트에게 응답으로 전달합니다.
즉, Service는 애플리케이션의 핵심 동작을 처리하는 중요한 역할을 합니다.
Repository는 데이터베이스에 접근하기 위한 메서드 형식을 정의하는 인터페이스입니다.
대표적으로 다음과 같은 형태가 있습니다.
CrudRepository : 기본적인 CRUD 기능을 제공하는 인터페이스JpaRepository : CRUD 기능은 물론, 페이징과 정렬 기능까지 함께 제공하며즉, Repository는 데이터베이스와 직접 연결되는 계층이라고 이해하시면 됩니다.
Entity는 데이터베이스에 저장되는 데이터의 구조를 표현하는 객체입니다.
쉽게 말해, 데이터베이스의 테이블과 매핑되는 클래스라고 볼 수 있습니다.
Spring Boot에서는 이 Entity를 기준으로 데이터를 저장하고 조회하게 됩니다.
데이터베이스를 사용하기 위해서는 Spring Boot의 데이터 흐름과 관련 용어를 먼저 이해할 필요가 있습니다.
이번 글에서는 데이터베이스의 필요성과 함께
DAO, DTO, VO, Getter/Setter, Service, Repository, Entity 같은
기본 용어들을 정리해보았습니다.
이 개념들은 Spring Boot에서 데이터베이스를 다룰 때 반복적으로 등장하는 만큼,
미리 잘 정리해두시면 이후 내용을 이해하는 데 큰 도움이 됩니다.