![](https://blog.kakaocdn.net/dn/dqHoFT/btsLE3v5ywm/RjtUYNLr4qRKAQTihaUEb0/img.png)
1. Spring Boot 프로젝트 생성할 것임.
Spring Initializr 사이트를 통해 프로젝트를 간단하게 생성 가능함.
![](https://blog.kakaocdn.net/dn/bhyURH/btsLA80hZYB/OKgWy3ULKGNCK6yGiugJq1/img.png)
2. Docker를 통해서 mysql-container 생성하기
Docker 를 통해서 my sql 설치하는 건 추후에 올리겠음.
- cmd를 통해서 Docker run 명령어를 통해서 컨테이너를 생성할 수 있음.
docker run --name <컨테이너 이름 지정> -e MYSQL_ROOT_PASSWORD=<root비밀번호지정> -d mysql:latest
① --name 뒤에는 컨테이너 이름 지정
② -e 뒤에는 MY_SQL_ROOT의 패스워드를 지정해주면 되는데 기본 root로 지정.
③ -d 는 디태치드 모드 (detached mode)임
- 디태치드 모드란 컨테이너를 실행하겟다는 의미임. 백그라운드에서 컨테이너가 실행되도록하는 모드로 컨테이너는 계속 실행되고 바로 명령어 프롬프트로 돌아옴. 이 옵션을 사용하면 컨테이너가 백그라운드에서 실행됨. 명령어 실행 후 터미널이 바로 반환됨, 컨테이너는 계속해서 실행됨/ -d를 빼버리면 컨테이너가 터미널에 출력된 상태로 실행됨.
- -d 옵션 사용 시: 컨테이너는 백그라운드에서 실행되고, 터미널은 자유롭게 다른 작업을 할 수 있습니다. (컨테이너의 로그나 출력은 별도로 확인해야 함)
- -d 옵션 없이 실행 시: 컨테이너의 로그나 출력이 터미널에 계속 표시되며, 터미널을 컨테이너의 상태를 확인하는 데 사용합니다. 이 상태에서는 터미널을 다른 작업에 사용할 수 없습니다
④ mysql:latest
- Docker 이미지 이름임.
- mysql: Docker Hub에서 가져올 MySQL 공식 이미지를 지정함.
- latest: 태그로, MySQL 이미지의 최신버전을 사용하도록 지정.
> 왜 이미지냐? Docker에서 이미지는 실행 가능한 상태의 템플릿이기 때문에, 실행을 통해 컨테이너를 만듭니다. mysql 이미지로부터 MySQL 컨테이너를 생성하고 실행하는 것이죠. Docker Hub는 다양한 애플리케이션의 이미지 레지스트리 역할을 하는 곳이며, MySQL은 그곳에서 제공하는 기본 이미지를 지정한 것입니다. My SQL은 DB를 실행할 수 있는 템플릿을 제공함.
3. Spring boot 와 MySQL 연결
① application.properties 찾기
![](https://blog.kakaocdn.net/dn/clGM5x/btsLCFiBkFv/7SeprtP0efJKJrZdgu5IKK/img.png)
② 해당 파일에 설정 추가해주기.
spring.application.name=Todoapp
spring.datasource.url=jdbc:mysql://localhost:3306/todoapp
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
(1) spring.application.name=Todoapp
- 애플리케이션의 이름을 지정합니다.
- 여기서는 Todoapp으로 설정했기 때문에, 로깅이나 애플리케이션의 이름을 식별할 때 사용될 수 있습니다.
(2) spring.datasource.url=jdbc:mysql://localhost:3306/todoapp
- MySQL 데이터베이스에 연결하기 위한 JDBC URL입니다.
- jdbc:mysql://: MySQL 데이터베이스에 연결하기 위한 프로토콜.
- localhost: 데이터베이스가 실행되는 호스트명 (로컬 개발 환경에서 localhost).
- 3306: MySQL 데이터베이스의 기본 포트 번호.
- todoapp: 사용할 데이터베이스 이름. 이 예에서는 todoapp 데이터베이스에 연결합니다.
(3) spring.datasource.username=root
- MySQL 데이터베이스에 접속할 때 사용할 사용자 이름입니다. 여기서는 MySQL의 기본 사용자 이름인 root를 사용하고 있습니다.
- 주의: 실제 프로덕션 환경에서는 보안 상의 이유로 관리자 계정을 사용하지 않는 것이 좋다.
(4) spring.datasource.password=root
- MySQL 데이터베이스에 접속할 때 사용할 비밀번호입니다. 여기서도 root 비밀번호를 사용하고 있습니다.
- 주의: 비밀번호는 실제 프로덕션 환경에서는 보다 안전한 값을 사용해야 함.
(5) spring.datasource.driver-class-name=cohttp://m.mysql.cj.jdbc.Driver
- MySQL 데이터베이스에 연결하기 위한 JDBC 드라이버 클래스를 지정합니다.
- com.http://m.mysql.cj.jdbc.Driver 는 MySQL 8 이상에서 사용되는 JDBC 드라이버 클래스입니다.
- MySQL 5.x 버전에서는 com.http://m.mysql.jdbc.Driver를 사용했지만, MySQL 8 이상에서는 cohttp://m.mysql.cj.jdbc.Driver를 사용해야 함.
(6) spring.jpa.hibernate.ddl-auto=update
- 이 설정은 JPA가 애플리케이션 실행 시 데이터베이스 스키마를 어떻게 관리할지 결정합니다.
- update: 애플리케이션을 실행할 때, 엔티티 클래스에서 정의한 테이블 구조에 맞게 데이터베이스를 자동으로 업데이트. 기존 테이블에 새로운 필드나 테이블을 추가하거나 변경된 사항을 반영. 데이터 손실이 발생하지 않도록 주의해야 함.
- none: Hibernate가 데이터베이스 스키마를 관리하지 않음.
- create: 애플리케이션 실행 시, 데이터베이스를 완전히 새로 생성 (기존 데이터 삭제).
- create-drop: 애플리케이션 종료 시, 데이터베이스를 삭제.
(7) spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
- 이 설정은 Hibernate가 사용할 JPA Dialect를 지정합니다.
- org.hibernate.dialect.MySQL8Dialect: MySQL 8.x 버전과 호환되는 Hibernate Dialect를 지정합니다. 이를 통해 Hibernate가 MySQL에 최적화된 SQL을 생성하도록 돕습니다.
- MySQL 5.x의 경우 org.hibernate.dialect.MySQL5Dialect를 사용합니다.
4. Spring Boot 와 MySQL 연결 확인
![](https://blog.kakaocdn.net/dn/AaAcI/btsLDTNtVRq/oKtDTTPhO0kuxhnhJIeH0k/img.png)
- TodoappApplication 오른쪽 클릭후 실행 클릭 해주기
- 이후 터미널을 통해서
![](https://blog.kakaocdn.net/dn/bC8Hs2/btsLCDZkMz6/8JtzT0NkyxD9hDtdF8tR50/img.png)
- 잘 연결됐는지 확인 하면 됨.
- 체크 표시들을 통해서 DB 연결되었다는 걸 확인할 수 있음. = > 모르겠으면 로그 복사해서 gpt한테 물어보면 확인 가능
+) Docker 에러 날 시, 명령어
* Docker 확인 할 때 *
docker info- Docker 가 잘 작동하나 확인
docker ps -a 실행 중인 컨테이너 확인 >
docker stop mysql-contaier : 실행중인 컨테이너 정지
docker rm mysql-container : 중지된 컨테이너를 삭제
* 만약 포트 충돌이 났다? *
1. netstat -ano | findstr :3306 > 친 후, 를 가져와서 LISTENING 에 있는 ID 확인
2. taskkill /PID <LISTENING 에 있는 ID> /F > 이거 쳐주면 포트 충돌된 프로세스 종료함.
'프로젝트 > ToDoApp프로젝트-Spring' 카테고리의 다른 글
[ToDoApp] REST API 개념 (0) | 2025.01.05 |
---|---|
[벡앤드] Docker 를 통해서 MySQL 연결, 그 후 Spring Boot 연결 (0) | 2025.01.05 |
[To Do App] 프론트엔드 개발 환경 (1) | 2025.01.02 |
[To Do App] 프로젝트 설계 (0) | 2025.01.02 |