๐ [SARAMARA]Github:
๋ฌด์ธ๊ฐ๋ฅผ ๊ตฌ๋งคํ ๋ ์ฌ์ผํ ์ง ๋ง์์ผํ ์ง ๊ณ ๋ฏผ๋๋ ๊ฒ๋ค์ ๊ณต์ ํ๋ ๊ตฌ๋งค ๊ณ ๋ฏผ๊ณผ ๊ด๋ จ๋ ์ปค๋ฎค๋ํฐ Saramara ํ๋ก์ ํธ์ Backend ์ ์ฅ์ ์ ๋๋ค.
๋ง์ ๊ธฐ๊ฐ์ด ์ง๋ฌ๊ณ , ๋ค์ ์์ํ๊ธฐ ์ํด์ Git Clone์ ๋ฐ์์๋ค.
๊ทธ๋ฌ๋, ๋นํน์ค๋ฌ์ด ๋นจ๊ฐ์ค์ ์๋ฌ๊ฐ ๋ฐ๊ฒจ์ฃผ์๋ค.
์๋ฌ๋ฅผ ์ ์ดํด๋ณด๋ฉด Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.2.
์ ์๋ฌ๋ฅผ ์ฐพ์๋ณผ ์ ์์๋ค.
๊ทธ๋ฆฌ๊ณ ํ ๊ฐ์ง ๋ ํํธ๋ฅผ ์ฐพ์ ์ ์์๋๋ฐ, No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.2 was found. The consumer was configured to find a runtime of a library compatible with Java 11,
์ ์๋ฌ๋ก ํํธ๋ฅผ ์ป์๋ค.
SARAMARA ํ๋ก์ ํธ๋ Spring Boot 3.0.2 Version์ ์ฌ์ฉํ๋ค.
ํน์๋ ์์ ์ ํ๋ก์ ํธ๊ฐ ๊ณผ๊ฑฐ์ ์งํ๋์ ๊ธฐ์ต์ด ๊ฐ๋ฌผ๊ฐ๋ฌผํ๋ค๋ฉดbuild.gradle
File์ ํ์ธํด๋ณด์.
Spring Boot 3.0 ๋ฒ์ ์ดํ๋ก๋ JDK 17์ ์ฌ์ฉํด์ผ ํ๊ณ , ์ด์งธ์์ธ์ง ๋ด๊ฐ ์ฌ์ฉํ ์ธํ ๋ฆฌ์ ์ด์์๋ JDK 11๋ก ์ค์ ๋์ด์์๊ธฐ ๋๋ฌธ์ ๋ถ๋ด๋ถ๋ด JDK 17๋ก ์์ ํ๊ณ ๋๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค.
๊ต์ก ์ค์ ์งํํ๋ ์ฝ๋์ฌ์ ๊ทธ๋ฐ์ง ์ ๋ง ์๋ง์ง์ฐฝ์ด์๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ๊ธฐ์ ์์ ์ด ์๋ง์ง์ฐฝ์ ์ฝ๋๋ฅผ ๊ฐ๋ค๋ฌ์ ํ์๊ฐ ์์๋ค. (๋ณ๋ก ์งํ๋ ์ฝ๋๋ ์์์ง๋ง..)
PK ๊ฐ์ธ boardId๋ฅผ private Long id
๋ก ์์ฑํ๊ณ @Column
์ด๋
ธํ
์ด์
์ผ๋ก name์ ๋ฌ์์ค ๊ฒ์ด Spring MVC ํจํด์์ ์คํ๋ ค ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค๊ณ ํ๋จํด์ @Column
์ด๋
ธํ
์ด์
์ ์ญ์ ํ๊ณ private Long boardId
๋ก ๋ช
ํํ๊ฒ ๋ํ๋ด์ฃผ๋๋ก ์์ ํ๋ค.
private Long likes
๊ฒ์๋ฌผ์ ์ข์์๋ฅผ ๋ํ๋ผ Colume์ผ๋ก ์์ฑํ์๋ค.
์ด ๋ถ๋ถ์ ์ฌ์ฉ์์ ์ข์์ ์ํ๋ฅผ ๋ํ๋ด๊ณ ์ค๋ณต๋๋ ์ํฉ์ ์์ ๊ธฐ ์ํด ๋ณ๋์ likeForBoard์ ํ
์ด๋ธ์ ํ์ฑํด์ผ ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํด๋น ์๊ฒฌ์ ํ์ ์ ๋ฌํ๊ณ ์ดํ์ ์์
์ ์ถ๊ฐํ ์์ ์ด๋ฏ๋ก ์ ๊ฑฐํ๋ค.
(์ง๊ธ ๋ณด๋ likeCount๋ก ๊ฐฏ์๋ฅผ ์ ๋ฆฌํด์ค Colume์ด ํ์ํ๋ฐ ์ด ๋ถ๋ถ์ผ๋ก ์์ ์ ํ๊ณ ๋ณ๋์ ํ
์ด๋ธ์ ์์ฑํ๋ฉด ๋๋ค.. ํ์ง๋ง, ๊ทธ๊ฑฐ๋ ๊ทธ๊ฑฐ๋ ๊ฐ๋ค.๐)
์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ ๊น ๊ณ ๋ฏผ์ด ๋ง์๋ค. ํ์ง๋ง Board์ ์์ ์ด ์ด๋์ ๋ ์ ํ๋์ด์ผ ํ๋ ๊ฐ๋ฐ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ Comment ๋ถ๋ถ์ ๊ณผ๊ฐํ๊ฒ ์ญ์ ํ๋ค. ์ดํ์ Comment์ ๊ฐ๋ฐ ์งํ์ ๋ง์ถฐ์ ๋ณ๋๋ก ๋ค์ ์์ฑํด์ค ์์ ์ด๋ค.
์์ Board Entity์์ ์์ ํ ๋ด์ฉ์ ๋ฐ์ํ ์์ ์ด๋ค.
DTOtoEntity
EntitytoDTO
์ ๊ฐ์ ๋ณํ ์ฝ๋๊ฐ ๋ฒ๊ฑฐ๋ก์์ ํ์ฌ ModelMapper๋ฅผ ๋์
ํ ๊ณํ์ค์ด๊ณ ๊ทธ์ ๊ฐ๊น๊ฒ ์งํ๋๊ณ ์๋ค. ๊ทธ๋์ ๊ทธ์ ๋ง๊ฒ ํ์์๋ ์ฝ๋๊ฐ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋์๋ค.
BoardPageResponseDTO ๋ฉ์๋๊ฐ ํ์ฌ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ ์ง ๊ณ ๋ฏผ์์ด ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์์ด ์ด์ ์๋ ์ฝ๋๋ก ๋ถํ์ํ ์ฝ๋๋ผ ํ๋จํ๊ณ , ํด๋น ๋ถ๋ถ์ ๊ณผ๊ฐํ๊ฒ ์ญ์ ํ๋ค.
(์์ง ๊ฒ์๋ฌผ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ์ ๊ธฐ๋ณธ์ ์ธ CRUD๋ ์งํ์ด ์ ๋๋ก ์๋ฃ๋์ด ์์ง ์์ ์ํ์์ ํ์์๋ ๋ฉ์๋๋ผ ํ๋จ!)
๊ฒ์๋ฌผ ์๋น์ค๋ฅผ ๋ค์ ์งํํ๊ธฐ ์ํด์ ์ฝ๋๋ฅผ ๋ค์ ์ดํด๋ณด๊ณ ์์ ํ๊ณ ๋ฒ๋ฆด๊ป ๋ฒ๋ ธ๋ค.
์์ฑ๋ ์ฝ๋์๋ค๋ฉด ๋ฆฌํฉํฐ๋ง์ ์งํํ์ ๊ฒ์ด์ง๋ง, ์งํ์ด ๊ทน๊ทน๊ทน ์ด๋ฐ์ ๊ฐ๋ฐ์ํ์๊ธฐ ๋๋ฌธ์ ๋ค์ ๊ธฐ๋ฐ์ ์ก์ ๊ฒ์ด๋ค.
๊ธฐํํ๋ ์์ด๋์ด๋ฅผ ๋ฒ๋ฆฌ์ง ์๊ณ ๋ค์ ์ด๋ ค๋ณธ๋ค๋ ๊ฒ์ด ํฅ๋ฏธ๋กญ๊ณ , ๊ฐ์ธ๊ณต๋ถ์ ๋ณํํ๋ฉด์ ํ๋ก์ ํธ๋ฅผ ํ๊ธฐ์๋ ํ๋ ์๊ฐ์ด ๋๊ฒ ์ง๋ง, ๋ถ๋ช ์ฌ๋ฏธ์์ ๊ฒ ๊ฐ์์ ๊ธฐ๋๋๋ค!๐คฉ