Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions spring-db/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/gradlew text eol=lf
*.bat text eol=crlf
*.jar binary
38 changes: 38 additions & 0 deletions spring-db/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
HELP.md
.env
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
46 changes: 46 additions & 0 deletions spring-db/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 과제명
게시판 + DB 연동
## ⚙️ 실행 방법
1. MySQL 실행 후 데이터베이스 생성
```sql
CREATE DATABASE board_spring_db;
```
2. `.env`에 DB 정보 설정

3. Intelij Spring Boot 프로젝트 실행

---

## 💡 작업 내용

### 게시글 CRUD 기능 구현

* 게시글 생성
* 게시글 전체 조회
* 게시글 단건 조회
* 게시글 수정
* 게시글 삭제

### DB 연동

* Spring Data JPA 사용
* MySQL 연동
* JpaRepository 활용

---

## 📡 API 명세

| Method | URI | 설명 |
| ------ | ----------- | -------------- |
| POST | /posts | 게시글 생성 |
| GET | /posts | 게시글 목록 조회 |
| GET | /posts/{id} | 게시글 단건 조회 |
| PUT | /posts/{id} | 게시글 수정 |
| DELETE | /posts/{id} | 게시글 삭제 |

---

## 🤔 느낀 점 / 어려웠던 점
- 처음 CRUD를 구현했을때보다 어노테이션들에 대해 더욱 익숙해진 것 같습니다.
- DTO를 사용하는 이유와 Entity를 직접 반환하지 않는 이유를 더욱 잘 이해하게 되었습니다.
38 changes: 38 additions & 0 deletions spring-db/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.6'
id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.project'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test'
testImplementation 'org.springframework.boot:spring-boot-starter-validation-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testCompileOnly 'org.projectlombok:lombok'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
testAnnotationProcessor 'org.projectlombok:lombok'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file added spring-db/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
9 changes: 9 additions & 0 deletions spring-db/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
248 changes: 248 additions & 0 deletions spring-db/gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading