[Spring Boot] Database 이론

Hood·2024년 7월 7일
0

Spring Boot

목록 보기
3/14
post-thumbnail

들어가며

인덕대학교 A&I 동아리를 하며 스터디 한 것을 바탕으로 작성하였습니다.


🔎 Database?

데이터베이스 는 여러 사람에 의해 공유되어 사용될 목적으로
통합하여 관리되는 데이터들의 집합이다.

✍ Database의 필요성

어플리케이션 레이어에서 로직에 의해서 생성한 특정 변수를 저장하고
지속적으로 참조하는 경우, 어플리케이션이 종료됨에 따라 값이 전부 사라지게 된다.
이를 영구적으로 저장하기 위해서는 데이터베이스 가 필요하게 된다.
그 외에도 클라이언트가 특수한 정보를 저장할 경우
서버에 저장하게 되면 다른 클라이언트들도 모두 참조할 수 있게 된다.

✍ Database의 종류

Spring Boot와 같은 백 엔드(Back-end)에서는
MySQL을 비롯한 MARIA DB, PostgreSQL, MongoDB, Amazon RDS 등등
여러가지 데이터 베이스가 있다.


🔎 MySQL !

그래서 여기서는 Spring Boot에서 MySQL 을 알아보려고 한다.
그 전에 데이터를 안전하게 전송하기 위해 DAODTO 에 대해 알아보려고 한다.

❓ What is DAO, DTO, VO

1. DAO는 Data Access Object의 약자로, DB의 데이터에 접근하기 위한 객체 를 가르킨다.

DB에 접근하기 위한 로직을 분리하기 위해서 사용되며,
직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조직할 수 있는 기능을 수행한다.

2. DTO는 Data Transfer Object의 약자로, 계층 간 데이터 교환을 위한 객체 를 가르킨다.

DTO는 로직을 가지지 않는 순수한 데이터 객체이며,
getter, setter 메소드만 가진 객체 클래스이다.
DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용한다.

3. VO는 Value Object의 약자로, 오직 읽기만 가능한 (Read-Only)의 속성을 갖는다.

단순한 값 타입을 표현하기 위하여 불변 클래스(Read-Only)를 만들어서 사용하며,
getter 기능 만을 수행한다.

❓ What is Getter, Setter

그렇다면 DTO와 VO의 Getter와 Setter가 궁금할 것이다.
Getter와 Setter는 객체 지향 프로그래밍의 일종의 메서드 라고 생각하면 편하다.

1. Getter

Getter는 객체의 속성(Propety)값을 반환하는 메서드이며,

2. Setter

Setter는 객체의 속성 값을 설정, 변경하는 메서드이다.


두 방식을 결과적으로 목표하고자 하는 바가 같고 결과값이 같게 보일 수도 있다.
그런데 굳이 번거롭게 사용하는 이유 는 무엇일까?
getter, setter 는 내부 속성에 직접 접근하지 않아 정보 은닉을 가능하게 해주어
보안을 강화할 수 있고, 코드의 안정성과 유지보수성을 높일 수 있는 장점이 있다.
또한 옳지않은 값을 넣으려고 할 때. 이를 미리 방지할 수 있다.

📌  Spring Boot의 데이터 흐름도


[출처] https://plo-developdiary.tistory.com/62

❓ What is Service, repository, entity

그렇다면 데이터베이스를 사용하기 위해서 Spring boot의 데이터 흐름도를 알 필요가 있다.
그 앞에서 다루지 않은 Service와 repository, entity의 개념을 알아보자.

1. Service

Service 는 엔드포인트의 실질적인 비즈니스 로직으로
실제로 Api를 전달받은 Controller는 Service에 데이터를 전달하고,
Service가 완료하여 반환한 값을 되돌려 받아 Client에게 전송한다.

2. Repository

Repository 는 데이터베이스에 접근하기 위한 메소드 형식을 정의하는 인터페이스이다.
세부적으로 들어가면 CrudRepositoryJpaRepository 가 존재한다.
간단히 설명하면
CrudRepository : Crud 기능을 제공하는 인터페이스
JpaRepository : Crud와 페이징 및 정렬이 제공하는 모든 기능을 쓸 수 있고
추가적으로 JPA에 특화된 메서드를 제공한다.

3. Entity

Entity 는 데이터베이스에 저장하게 되는 데이터의 모델링이다.


📌 결론

데이터베이스를 사용하기 위해 Spring Boot의 데이터 흐름도에 따른 용어들을 정리해 보았다.
이런 기본적인 용어들을 잘 알아두자!

profile
달을 향해 쏴라, 빗나가도 별이 될 테니 👊

0개의 댓글