๐โ๏ธ QNA ์๋น์ค ๊ธฐ๋ฅ ๊ตฌํ (๋ณต์ต) _ 17๊ฐ ~ 33๊ฐ
1๏ธโฃ Session
๋ฐ๋ก ์ ๋ฆฌํ ํ์๊ฐ ์์ด์ ๊ธ๋ก ์์ฑํ์๋ค. (https://like099.tistory.com/17)
2๏ธโฃ Article CRUD (Contorller ์์์๋ง ์์ง์_DB ์ฐ๊ฒฐ x)
- Stream ์ฌ์ฉ์ ํธ๋ฆฌ์ฑ (deleteArticle ์์)
List<Article> articles = new ArrayList<>();
๋ก ๊ฒ์๊ธ์ ๋ด์๋๋ ๋ฆฌ์คํธ๊ฐ ์กด์ฌํ๋ ์ํฉ.
โ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ
@RequestMapping("deleteArticle/{id}")
@ResponseBody
public String deleteArticle (@PathVariable int id) {
Article article= null;
for (Article a : articles) {
if (a.getId() == id) {
article = a;
}
}
if (article == null) {
return "ํด๋น ๊ธ์ ์กด์ฌํ์ง ์์ต๋๋ค.";
}
articles.remove(article);
return "%d๋ฒ ๊ธ์ด ์ญ์ ๋์์ต๋๋ค.".formatted(id);
}
๋ฐ๋ณต๋ฌธ์ ํตํด์ id ์ ์ผ์นํ๋ ๊ฒ์๊ธ์ด ์๋์ง ํ์ธ.
โก Stream ์ฌ์ฉ
@RequestMapping("deleteArticle/{id}")
@ResponseBody
public String deleteArticle (@PathVariable int id) {
Article article = articles
.stream()
.filter(a -> a.getId() == id)
.findFirst()
.orElse(null);
if (article == null) {
return "ํด๋น ๊ธ์ ์กด์ฌํ์ง ์์ต๋๋ค.";
}
articles.remove(article);
return "%d๋ฒ ๊ธ์ด ์ญ์ ๋์์ต๋๋ค.".formatted(id);
}
stream ์ด ์๋ํ๋ฉด์ findFirst() ์ ์ํด id ๊ฐ ์ผ์นํ๋ ๊ฒ์๊ธ์ด ํ๋๋ผ๋ ๋ฐ๊ฒฌ๋๋ฉด ๋ฐ๋ก ์๋์ ๋ฉ์ถ๊ณ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ค. ๊ฒ์๊ธ์ด ๋ง์์ง์๋ก ํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋ ์ ์์.
3๏ธโฃ JPA
- JPA ์ ์๋๊ณผ์
๊ฐ๋ฐ์ -> Spring Data JPA -> JPA -> JDBC -> (DB) ๋๋ผ์ด๋ฒ -> DB
๊ฐ๋ฐ์๋ findById() ์ ๊ฐ์ ๋งค์๋๋ก ์ถ์ํ๋ Spring Data JPA ์ ์ํตํ๊ฒ ๋๋ฉฐ select ๋ where ๋ฌธ ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ๊ทธ ์๋๋จ์์ ์ฒ๋ฆฌํ๋ค.
- ์์กด์ฑ ์ฃผ์ & ์ค์ (Gradle ๊ธฐ์ค)
JPA ๋ ๊ธฐ๋ณธ์ ์ผ๋ก DB ๊ฐ ์ฐ๊ฒฐ๋์ด์์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก db ์ ํจ๊ป ์ค์ ํด์ค๋ค.
// h2 DB ์ถ๊ฐ
runtimeOnly 'com.h2database:h2'
// JPA ์์กด์ฑ ์ถ๊ฐ
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
# DATABASE
## SQL Yog ๊ฐ์ ์ฝ์์ด ์น์ผ๋ก ์ ๊ณต๋๋๊ฒ ์๋๋ฐ, ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ฒ ๋ค.
spring.h2.console.enabled=true
## ์ฝ์์ URL
spring.h2.console.path=/h2-console
## DB ํ์ผ์ ์์น / MySQL ๊ณผ ์ ์ฌํ๊ฒ ์๋ํ๊ฒ ํ๊ธฐ ์ํด์ Mode ์์ spring.datasource.url=jdbc:h2:~/qna;MODE=MYSQL
## ๋๋ผ์ด๋ฒ ํด๋์ค๋ช
spring.datasource.driverClassName=org.h2.Driver
## DB ID : sa ๊ณ์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ด์๋ค.
spring.datasource.username=sa
## DB PW : sa ๊ณ์ ์ ๋น๋ฒ, ๋ณดํต ์์
spring.datasource.password=
# JPA
## ์ฐ๊ฒฐ๋๋ DB ์ค์ (ํ์ฌ๋ h2 DB ๊ธฐ์ค)
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
## ํ ์ด๋ธ ๊ด๋ฆฌ ๋ฐฉ์
spring.jpa.hibernate.ddl-auto=update
โ ์ถ๊ฐ๋ก ์๊ฒ๋ ์
Spring Boot ์์ Controller ๋ return ์ JSON ํ ํด์ ๋๋ ค์ฃผ๋๋ฐ ์ด ๋ ์ญ์จ์ด ์ฌ์ฉ๋จ. ๊ฐ ํ์ ๋ค์ ์๋์ ๊ฐ์ด ๋ณํ๋๋ค.
List => [ ]
Map => { }
๊ฐ์ฒด => { }
int, boolean ๋ฑ => String (๋ฌธ์ฅํ)
'TIL ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| TlL 6์ผ์ฐจ (2022.10.14) (0) | 2022.10.14 |
|---|---|
| TIL 5์ผ์ฐจ (2022.10.13) (0) | 2022.10.13 |
| TIL 4์ผ์ฐจ (2022.10.12) (0) | 2022.10.12 |
| TIL 3์ผ์ฐจ (2022.10.11) (0) | 2022.10.11 |
| TIL 1์ผ์ฐจ (2022.10.06) (0) | 2022.10.06 |