์๋ฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ด๋? : ์๋ฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ์๋ฐ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํด ๋ฐ๋ฅด๋ ์ผ๋ จ์ ๊ท์น ์ด๋ฌํ ๊ท์น์ ํ๋ก์ ํธ ํ์ด๋ ์กฐ์ง์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ์ฉ๋์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ์๋ฐ ์ฝ๋ฉ ์ปจ๋ฒค์
์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์์! ๋ช
๋ช
๊ท์น (Naming Conventions) - ํด๋์ค ์ด๋ฆ: ๋๋ฌธ์๋ก ์์ํ๊ณ ๋ช
์ฌ๋ก ์์ฑ. ์: MyClass, Customer. - ๋ฉ์๋ ์ด๋ฆ: ์๋ฌธ์๋ก ์์ํ๊ณ ๋์ฌ๋ก ์์ฑ. ์: getData, setAge. - ๋ณ์ ์ด๋ฆ: ์๋ฌธ์๋ก ์์ํ๋ฉฐ, ์ฌ๋ฌ ๋จ์ด๊ฐ ์๋ ๊ฒฝ์ฐ camelCase๋ฅผ ์ฌ์ฉ. ์: firstName, customerList. - ์์ ์ด๋ฆ: ๋ชจ๋ ๋๋ฌธ์๋ก ์์ฑํ๋ฉฐ, ๋จ์ด ๊ฐ์๋ ๋ฐ์ค(_)๋ก ๊ตฌ..
STUDY ๐
์ด๊ณตํ๊ธฐ!Spring Data JPA : JPA๋ฅผ ์ด์ฉํ ๊ตฌํ์ฒด๋ฅผ ๋ ์ถ์ํ์์ผ์ ์ฝ๊ณ ๊ฐํธํ๊ฒ JPA๋ฅผ ์ด์ฉํ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ์ ์๊ฒ ํด์ฃผ๋ ๋ชจ๋ *JPA = Java Persitence API์ ์ฝ์, ์๋ฐ์ ORM(์๋ฐ์ ๊ฐ์ฒด์ ๊ด๊ณํ DB๋ฅผ ๋งตํ)์ ์ํ ํ์ค ๊ธฐ์ Spring Data JPA → JPA(=๊ท์ฝ)→ Hibernate(JPA ๊ตฌํ์ฒด) → JDBC Driver → MariaDB Driver(JDBC ๋๋ผ์ด๋ฒ ๊ตฌํ์ฒด) → MariaDB ์ฐธ๊ณ ) https://suhwan.dev/2019/02/24/jpa-vs-hibernate-vs-spring-data-jpa/ JPA, Hibernate, ๊ทธ๋ฆฌ๊ณ Spring Data JPA์ ์ฐจ์ด์ ๊ฐ์ Spring ํ๋ ์์ํฌ๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ ๋ ํ์..
์ฟ ํค : ํด๋ผ์ด์ธํธ ๋ก์ปฌ์ ์ ์ฅ๋๋Key-Value์์ ์์ ๋ฐ์ดํฐ ํ์ผ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ๊ฐ์ ์์ฑ/์์ /์ญ์ ํ ์ ์๋ค. ํด๋ผ์ด์ธํธ์์ ๊ฐ์ ์กฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ณด์์ ์ทจ์ฝํ๋ค. ๊ฐ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ ์งํด์ผํ๋ ๋ณ๋ก ์ค์ํ์ง ์์ ์ ๋ณด๋ ์ฟ ํค์ ์ ์ฅํด๋ ๋๋ค. JSESSIONID ๋ ์ค์ํ ์ ๋ณด์ด์ง๋ง ๊ตฌ์กฐ์ ์ด์ฉ ์ ์์ด ์ฟ ํค์ ์ ์ฅ๋์ด์ผ ํ๋ค. JSESSIONID ๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๊ฐ ์กฐ์์ ํ๋๋ผ๋ ๋ณธ์ธ๋ง ์ํด์ด๊ธฐ ๋๋ฌธ์, ๋ณดํต์ ์กฐ์์ ํ์ง ์๋๋ค. ์ธ์
: ๋ธ๋ผ์ฐ์ ๊ฐ ์ข
๋ฃ๋๊ธฐ ์ ๊น์ง ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์งํ๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์๋ฒ์์๋ง ๊ฐ์ ์์ฑ/์์ /์ญ์ ํ ์ ์๋ค. ํด๋ผ์ด์ธํธ์์ ๊ฐ์ ์กฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ณด์์ฑ์ด ์ข๋ค. ๊ฐ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ ์งํด์ผํ๋ ์ค์ํ ์ ๋ณด๋ ์ธ์
์ ์ ..
Flex ์ปจํ
์ด๋์ ์ ์ฉํ๋ ์์ฑ justify-content → ๋ฉ์ธ์ถ(๊ฐ๋ก) ๋ฐฉํฅ์ผ๋ก ์์ดํ
๋ค์ ์ ๋ ฌ flex-start : ์์์ ์ ๋ ฌ flex-end : ๋์ ์ ๋ ฌ center : ๊ฐ์ด๋ฐ ์ ๋ ฌ space-between : ์์ดํ
๋ค ์ฌ์ด์ ๊ท ์ผํ ๊ฐ๊ฒฉ์ ๋ง๋ค์ด ์ ๋ ฌ space-evenly : ์์ดํ
๋ค์ ์ฌ์ด์ ์ ๋์ ๊ท ์ผํ ๊ฐ๊ฒฉ์ ๋ง๋ค์ด ์ ๋ ฌ space-around : ์์ดํ
๋ค์ ๋๋ ์ ๊ท ์ผํ ๊ฐ๊ฒฉ์ ๋ง๋ค์ด ์ ๋ ฌ align-items → ์์ง์ถ(์ธ๋ก) ๋ฐฉํฅ์ผ๋ก ์์ดํ
๋ค์ ์ ๋ ฌ flex-start : ์์์ ์ ๋ ฌ flex-end : ๋์ ์ ๋ ฌ center : ๊ฐ์ด๋ฐ ์ ๋ ฌ stretch : ์์ง์ถ ๋ฐฉํฅ์ผ๋ก ๋๊น์ง ๋์ด๋จ flex-direction → ๋ฐฐ์น๋๋ ์ถ์ ๋ฐฉํฅ์ ๊ฒฐ์ row : ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก..
1. HomeController ์ถ๊ฐ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; // @Controller ์ ์๋ฏธ // ๊ฐ๋ฐ์ -> ์คํ๋ง๋ถํธ // ์๋ ์๋ HomeController ๋ ์ปจํธ๋กค๋ฌ์ @Controller public class HomeController { // @GetMapping("/home/main") ์ ์๋ฏธ // ๊ฐ๋ฐ์ -> ์คํ๋ง๋ถํธ // ๋ง์ฝ์ /home/main ์ด๋ฐ ์์ฒญ์ด ์ค๋ฉด ์๋ ๋ฉ์๋๋ฅผ ์คํํจ @GetMap..
1. start.spring.io ์์ฑ https://start.spring.io 1) ์ ๋งํฌ์์ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ํ๋ก์ ํธ๋ฅผ ์์ฑ 2) GENERATE๋ฅผ ๋๋ฅด๊ณ zip ํ์ผ์ ๋ค์ด 3) ๋ค์ด๋ฐ์ zip ํ์ผ์ ํ๋ก์ ํธ๊ฐ ์ ์ฅ๋๋ ํ์ผ์ ํ๊ธฐ 2. IntelliJ ์ค์ 1) ํ์ผ ์ด๊ธฐ๋ฅผ ๋๋ฌ์ ์์ถํด์ ํ๋ ํ์ผ์ ์ด๊ธฐ 2) ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ค์ (๋ฉ๋ด -> ํ์ผ -> settings(์ค์ )) 3) ๋กฌ๋ณต ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ถ๊ฐ ํ ์ฒซ ๋น๋์์ ์ฐฝ์ด ๋จ๋ฉด enable annotaion processing์ ํด๋ฆญํ์ฌ ํ์ฑํ 4) ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ค์ (๋ฉ๋ด -> ํ์ผ -> Project Structure(ํ๋ก์ ํธ ๊ตฌ์กฐ)) 3. Application ์คํ
CHAR ๊ณ ์ ํ : ex) CHAR(8) -> ๋ฌธ์ ๋ช ๊ฐ๋ฅผ ๋ฃ๋ 8๋ฐ์ดํธ์ฉ ์ฐจ์ง CHAR๋ ์ถํ ์ฐ์ฐ์ด ํ์ ์๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ์์ ์๊ด์์ด ์ ์ฅ์ฉ๋์ด ์๋ชจ๋จ ๊ธ์ ์๊ฐ ๊ณ ์ ๋๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ VARCHAR ๊ฐ๋ณํ : ex) VARCHAR(8) -> ๋ฌธ์ ํ ๊ฐ๋น 1๋ฐ์ดํธ์ฉ ์ฐจ์ง ๋ฐ์ดํฐ ๊ธธ์ด์ ๋ฐ๋ผ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ธธ์ด๊ฐ ์ ํด์ง VARCHAR๋ ์๋๊ฐ ๋๋ฆฌ์ง๋ง ์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ์์ ๋ฐ๋ผ์ ์ ์ฅ์ฉ๋์ ์ ์ฝํจ