Spring Guide 시리즈는
스프링부트 핵심 가이드 - 스프링 부트를 활용한 애플리케이션 개발 실무
책을 통해 학습 및 정리한 내용을 담고 있습니다.
어떤 서비스의 어플리케이션을 작성한다면, 백엔드에서는 여러 데이터들을 잘 저장하고 관리해야한다. 그러기 위해선 데이터베이스가 꼭 필요하다. 지금까지 했던 프로젝트에 데이터베이스를 연결해보도록 하자.
데이터베이스 연결
교재에선 Window 운영체제와 MariaDB를 사용하지만, 나는 MacOS를 사용하고 있고 PostgreSQL을 사용하고 싶어서 좀 다르게 진행했다. 이전에 Node.js 진영 프레임워크를 가지고 서버 프로젝트를 여러개 진행했을 때에도 PostgreSQL을 사용했다. 이 두 DB는 멀티 프로세스 방식인지 멀티 스레드 방식인지에 차이가 있다. 프로세스
와 스레드
의 차이는 한번 확인해보고 오는 것이 좋을 것 같다. 그래서 PostgreSQL이 좀 더 복잡하고 거대한 쿼리들에 좀 더 안정적이라는 특징이 있다. 앞으로 실습에서 뭔가 엄청난 쿼리를 짤 것 같아 보이진 않지만, PostgreSQL이 처음이라면 한번 이참에 써보는 것도 좋을 것 같다.
PostgreSQL
나는 macOS를 사용하고 있기에, macOS 기준으로 설명하도록 하겠다. Window 혹은 또 다른 OS를 사용하는 경우는 구글링하면 자료가 정말 많으니 그걸 참고하면 좋을 것 같다.
macOS에서는 설치가 간단하다. 그냥 brew
를 이용해서 설치할 수 있다. brew search postgresql
명령을 이용하면 내가 사용할 수 있는 버전이 무엇이 있는지 확인해볼 수 있다. 여러 버전들 중에서 나는 14 버전을 설치했다.
1
2
# 14 버전 설치
brew install postgresql@14
그리고 아래 명령어를 입력하면 로컬에서 postgreSQL 서비스가 시작된다.
1
brew services start postgresql@14
이후에 psql postgres
로 PostgreSQL 쉘에 접속해보자.
해당 쉘에서 아래의 명령어를 입력해주자. 처음 접속하면 기본적으로 생성되는 유저만 존재하는데, 앞으로 실습할 때 사용할 유저를 별도로 생성하고 그 유저만 접속할 수 있는 데이터베이스를 만들 예정이다. 로컬에서 테스트하기 위한 용도로 만든 유저이기 때문에, 메이플스토리 닉네임 짓는 것처럼 너무 심혈을 기울여 만들지 않아도 된다.
1
create user 아이디 password '비밀번호' superuser;
유저를 생성했다면, 데이터베이스를 만들 차례이다. 방금 생성한 유저가 owner인 데이터베이스를 만들어보자.
1
create database 이름 owner 유저아이디;
여기까지 했다면 유저와 데이터베이스 모두 정상적으로 생성한 것이다.
DataGrip
편의를 위해 데이터베이스용 IDE인 DataGrip을 사용할 예정이다. DataGrip
이외에도 DBeaver
같은 도구도 있으니 찾아보면 좋을 것 같다. 이전부터 데이터그립을 사용해와서 그런지 DBeaver보다는 데이터그립이 좀 더 직관적인 것 같다.
DataGrip을 열고 새 프로젝트를 생성한 뒤에, 좌측 메뉴에서 아래와 같은 버튼을 눌러 데이터베이스를 연결하기 위한 세팅을 할 수 있다. 실제로 확인해보면 지금 표시된 PostgreSQL말고도 MySql, Redis 등 더 다양한 종류의 데이터베이스를 선택할 수 있다.
이후 연결창에서 아래의 내용을 채워넣고, Apply
를 눌러 데이터베이스 연결을 마친다.
1
2
3
4
host: localhost
port: 5432
user: 아까 세팅한 아이디
password: 아까 세팅한 비밀번호
이러면 실습을 위한 준비는 모두 마친 상태이다. 우리는 PostgreSQL을 이용해 사용할 유저와 데이터베이스를 마련했고, 실습을 진행하며 보다 쉽게 데이터들을 확인해볼 수 있도록 데이터베이스 용 IDE를 세팅했다. 즉, 서버와 DB는 어느정도 토대가 마련이 된 상황이라고 할 수 있다. 그럼 서버와 DB을 연결해줄 중간 다리 역할은 어떻게 구성할 수 있을까? 그리고 그 중간 다리를 어떻게 건너갈 수 있을까?