연동 작업은 당연하게도 MySQL의 설치가 선행되어야합니다. MySQL의 설치에 대해서는 생략합니다.
root 계정으로 MySQL에 접속한 후 다음과 같은 SQL문을 날립니다.
CREATE DATABASE library;
CREATE TABLE Book (
id BIGINT AUTO_INCREMENT NOT NULL,
name VARCHAR(30) NOT NULL,
author VARCHAR(30) NOT NULL,
registerDate DATETIME NOT NULL DEFAULT NOW(),
lent INT NOT NULL,
expense INT NOT NULL,
PRIMARY KEY (id)
);
CREATE USER appclient@localhost IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON library.* TO appclient@localhost;
저는 습관적으로 sql의 문법을 대문자로, 변수명은 소문자로 놓고 사용합니다. 이것은 SQL 문법에서 전혀 영향이 없습니다. 이것은 함께 작업하는 팀 끼리 정해놓으면 깔끔하고 좋습니다.
속성명도 대소문자 구분없이 사용해도 되지만, 테이블명과 속성명등의 컨벤션도 정해놓으면 좋습니다. 저는 제목은 파스칼케이스, 속성명은 카멜케이스를 선호합니다. 하지만 데이터베이스에서 속성명을 snake_case 로 하는 경우도 많습니다.
appclient 라는 사용자를 만들었습니다. appclient의 접근허용주소가 localhost로 설정되어있기 때문에, 이는 다음과 같은 상황에서는 제대로 작동하지 않습니다.
데이터베이스라는 새로운 기능이 추가됨으로써 생길 수 있는 새로운 에러를 ErrorCode에 정의해주겠습니다.
public enum ErrorCode {
...
DATABASE_ERROR(6000,"데이터베이스 관련 에러가 발생했습니다."),
DATABASE_CONNECTION_ERROR(6001,"데이터베이스 연결 에러가 발생했습니다."),
DATABASE_QUERY_ERROR(6002,"데이터베이스 쿼리 에러가 발생했습니다."),
DATABASE_RELEASE_FAILURE(6003,"데이터베이스 연결 해제 에러가 발생했습니다."),
...
}
hellspringboot 하위에 database라는 패키지를 만들고 Connection을 생성하는데 필요한 상수들을 정의할 ConnectionConst를 작성합니다.
public class ConnectionConstant {
public static final String DB_URL = "jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
public static final String ID = "appclient";
public static final String PW = "12345678";
}
DB_URL 은 실제 운영되는 mysql 서버의 엔드포인트가 들어갈 것입니다. 지금은 MySQL과 스프링부트를 같은 환경에서 돌리고 있기 때문에 localhost로 작성해줘도 무방합니다.`