졸업작품 7일차

임선구·2025년 5월 15일

졸업작품

목록 보기
7/29
post-thumbnail

오늘의 잔디

저번에 백엔드 코드들도 깃허브에 연동해서 잔디가 심어졌다.

근데 왜 오늘 수정한 코드들은 잔디가 안심어지지

커밋은 잘 됐는데....


📅 Spring Boot 일정 관리 앱 - 백엔드(DB 연동) 개발기 (1)

이번 포스트에서는 일정 관리 캘린더 웹앱의 백엔드 개발을 시작하면서,
MySQL 연동 및 기본적인 CRUD 준비 과정을 기록합니다.

✅ 프로젝트 목적

  • Spring Boot 기반 백엔드로 일정 데이터 관리

  • 프론트엔드에서 등록한 일정을 DB에 저장하고 조회/삭제

  • 실무에 가까운 환경 구성 (MySQL + JPA)


1. 📂 프로젝트 구조 설정

초기 디렉토리 구조:


2. 💽 MySQL 설치 및 사용자/DB 생성

CREATE DATABASE calendar_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'calendar_user'@'localhost' IDENTIFIED BY 'dlatjsrn1!';

GRANT ALL PRIVILEGES ON calendar_db.* TO 'calendar_user'@'localhost';
FLUSH PRIVILEGES;

3. ⚙️ build.gradle 설정

MySQL 드라이버 + JPA 설정

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'mysql:mysql-connector-j:8.0.33'
}
repositories {
    mavenCentral()
}

4. 🛠 application.properties 설정

# 앱 이름
spring.application.name=calendar

# MySQL 연결 정보
spring.datasource.url=jdbc:mysql://localhost:3306/calendar_db?useSSL=false&serverTimezone=Asia/Seoul
spring.datasource.username=calendar_user
spring.datasource.password=dlatjsrn1!
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA 설정
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

5. 📄 코드 정리

Event.java

// 일정 정보를 담는 모델 클래스
@Entity
public class Event {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String title;  // 일정 제목
    private String type;   // 일정 종류
    private String date;   // 일정 날짜

    // 기본 생성자 필수
    public Event() {}

    public Event(String title, String type, String date) {
        this.title = title;
        this.type = type;
        this.date = date;
    }

    // Getters and Setters 생략
}

EventRepository.java

@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
    // 기본적인 CRUD는 JpaRepository가 자동 제공
}

6. ⚠️ 트러블슈팅

  • Public Key Retrieval is not allowed
    → JDBC URL에 allowPublicKeyRetrieval=true 추가 필요

✅ 최종 URL 예시:

spring.datasource.url=jdbc:mysql://localhost:3306/calendar_db?useSSL=false&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true

✅ 마무리

지금까지 설정한 내용으로 MySQL과 연결된 JPA 기반 백엔드 환경 구성이 완료되었습니다.
다음 포스트에서는 실제로 프론트엔드와 연결되는 일정 저장/삭제 API 구현을 진행할 예정입니다.



profile
끝까지 가면 내가 다 이겨

0개의 댓글