nyximos.log

Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 01 - 데이터베이스 환경설정, 프로젝트 생성 본문

Programming/Spring Boot

Spring Boot + MySQL + JPA + Thymeleaf 로 CRUD 구현하기 01 - 데이터베이스 환경설정, 프로젝트 생성

nyximos 2022. 7. 25. 19:19

Spring Boot + Gradle + MySQL + JPA + Thymeleaf  환경에서 간단한 CRUD 예제를 만들어보자

이번 포스팅에서는 데이터베이스와 프로젝트를 생성 후 서버를 실행해 볼 것이다.

 

주요 기능

회원가입

로그인

게시글 등록

게시글 수정

게시글 삭제

게시글 조회 (일반 회원 조회수와 운영자 회원 조회수 따로 구분)

게시글 추천 

 

 

데이터베이스 접속, 환경설정

먼저 명령 프롬프트 창을 열어주자.

윈도우 검색창에 cmd 라고 치면 창이 뜬다.

 

1. 작업표시줄에서 검색

2. 키보드의 윈도우 키 + R 눌러서 cmd 검색

 

현재 위치에서 mysql - [계정명] -p 입력후 비밀번호 입력

계정을 만든 적이 없거나 최상위 계정으로 접속하려면 mysql -u root -p 라고 치고 DB 설치시 입력했던 비밀번호 입력

 

 

(나는 환경 변수에 Maria DB의 bin 경로를 추가해두었기 때문에 maria db로 접속한다.)

 

만약 위의 창이 뜨지 않을 시 환경 변수를 설정해주자.

 

환경 변수 추가 및 수정

제어판 - 시스템 및 보안 - 시스템 - 고급 시스템 설정 - 고급 - 환경 변수 - Path 편집

 

 

 

 

 

새로 만들기 클릭 후

MySQL Server 8.0의 bin 폴더의 경로를 적어주고 확인을 눌러주자.

 

 

 

 

 

컨벤션

DB 생성 전 컨벤션을 정하도록 하자.

컨벤션이란 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약이다. 쉽게 말하면 코딩 규칙!

컨벤션을 정해 놓으면 가독성이 좋고 협업할때 다른 사람의 코드를 보더라도 이해하기가 쉬우며 유지보수 비용을 줄일 수 있다.

 

앞으로 개인 프로젝트를 할 때나 협업을 하기 전 간단하게 맞춰 주도록하자.

 

1. 소문자 사용

2. 가능하다면 약어를 피한다.

3. 복수의 단어로 이루어 질때는 underscore로 연결하는 snake case를 사용하자.

 

 

데이터베이스 확인

SHOW DATABASES;

 

데이터베이스 생성

CREATE DATABASE [데이터베이스명];

 

나는 DB명을 crud_test라고 지었다.

JPA에 데이터베이스 스키마를 자동으로 생성해주는 기능이 있기 때문에 일단 데이터베이스 생성만 해두자.

 

사용자 생성

CREATE USER '사용자명'@'localhost' IDENTIFIED BY '패스워드';

ex)

CREATE USER 'crud'@'localhost' IDENTIFIED BY 'crud';

 

권한 부여

GRANT ALL PRIVILEGES ON DB명.* TO '사용자명'@'localhost';
FLUSH PRIVILEGES;

ex)

GRANT ALL PRIVILEGES ON crud_test.* TO 'crud'@'localhost';
FLUSH PRIVILEGES;

 

프로젝트 생성

IntelliJ IDEA를 켜고 New Project를 선택한다.

이미 프로젝트가 열려있다면 File - New - Project

 

 

Spring Initializr 선택후 내용 기입

Name에는 프로젝트명

Type은 Gradle

Java 버전은 11버전 이상으로 선택하도록하자.

해당 프로젝트 스프링부트 버전은 2.7.2이다.

 

 

* 유료 버전에서만 Spring Initializr를 사용할 수 있다고 한다.

   학생이라면 졸업 전까지 무료로 사용할 수 있으니 구글에 검색해서 라이센스를 발급하거나 구매 후 사용하거나

  https://start.spring.io/  사이트에서 프로젝트를 만들도록 하자.

 

 

Dependency 추가

검색창에 검색해서 선택해주자.

이때 MariaDB, MySQL 둘 다 선택하지말고 본인이 사용하는 DB의 Driver만 선택하자.

이 두개 외에도 다른 DB Driver가 있으니 참고하자.

 

Spring Web

Spring Boot DevTools

Spring Data JPA

Thymeleaf

Lombok

MariaDB Driver

MySQL Driver

 

 

 

 

 

Finish를 누르면 프로젝트가 생성된다.

 

 

 

 

Run을 누르자

상단의 Run 버튼을 누르거나

 

Application 파일에서 오른쪽 커서를 누르고 Run 하면 된다.

 

 

 

 

 

에러가 뜬다.

데이터베이스에 연결할 때 필요한 정보가 프로젝트에 명시 되어있지 않아서 뜨는 에러이다.

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
	If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).


Process finished with exit code 0

 

 

 

 

 

application.properties 파일이나 application.yml 파일에서 환경 요소 값을 설정해주자.

application.properties와 application.yml 파일은 문법이 다른 것이 가장 큰 차이점인데,

yml 파일은 들여쓰기를 통해 같은 레벨의 요소에 바로 접근 할 수 있기 때문에 최근에는 yml 파일을 많이 사용한다고 한다.

 

 

src/main/resources 폴더 안에 생성해주자.

 

 

application.properties

#Entity 설정이 바뀌면 테이블을 업데이트 하라는 뜻. 개발이 끝나면 아래 줄을 삭제하거나 none으로 변경한다.
spring.jpa.hibernate.ddl-auto=update

#사용하는 DB에 맞게 url을 설정해주자
spring.datasource.url=jdbc:mysql://localhost:3306/[DB 이름]
#spring.datasource.url=jdbc:mariadb://localhost:3306/[DB 이름]

spring.datasource.username=
spring.datasource.password=

 

application.yml

계층 단계 이동 시 space bar 2칸으로 들여쓰기를 한다.

4칸으로 하면 에러가 날 수 있으니 조심하도록 하자.

spring:
  datasource:
    url: jdbc:mariadb://localhost:3306/[DB 이름]
    username:
    password:

  jpa:
    hibernate:
      ddl-auto: update

 

 

 

Run을 누르면 에러가 또 뜰 수도 있고 안 뜰 수도 있다.

***************************
APPLICATION FAILED TO START
***************************

Description:

Web server failed to start. Port 8080 was already in use.

Action:

Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.


Process finished with exit code 0

 

 

 

 

 

에러가 뜬다면 다음 포스팅을 참고하도록하자.

Web server failed to start. Port 8080 was already in use. 해결 방법

 

 

 

 

 

요약

application.properties나 application.yml에 포트번호를 지정해주면 된다.

협업 할 때 8080 포트가 사용 중인 사람이 있을 수도 있으니까 맘편하게 포트 번호를 지정해두자.

사용하지 않는 아무 번호나 선택하면 된다.

application.properties

server.port=8086

 

application.yml

server:
  port: 8086

 

 

 

 

 

다시 Run 해보자.

에러가 안 뜨면 성공한거다. 

 

 

 

 

인터넷 브라우저를 열어 http://localhost:8086/ 로 이동해보자.

이런 화면이 나오면 성공이다 !