๐ปProgramming
-
[Database] ERD๋ฅผ ์ค๊ณํด๋ณด์!(1. ๊ฐ๋ ์ ๋ชจ๋ธ๋ง)๐ปProgramming/Database 2023. 10. 9. 12:53
ERD์ ๋ํด์ ์๊ธฐํ๊ธฐ ์ ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์๋ ๊ฒ์ด ์ข๋ค. https://suucong.tistory.com/32 [Database] ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋? ๋์๋ฆฌ ์คํฐ๋์์ ERD๋ฅผ ์ค๊ณํด๋ณด๋๊ฒ ๊ณผ์ ์ธ๋ฐ, ๊ทธ ๊น์ ์ ๋ฒ ํ๊ธฐ์ ํ๊ต ์์ ์ผ๋ก ๋ค์๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค. ๐ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํน์ฑ - ์ํ์์์ ๋ฆด๋ ์ด์ (relation)๊ณผ ์งํฉ(set) suucong.tistory.com ๐ ERD๋? Entity Relationship Diagram์ ์ฝ์๋ก "๊ฐ์ฒด"๋ค์ ์์ฑ๊ณผ ๊ฐ์ฒด๋ค๊ณผ์ "๊ด๊ณ"๋ฅผ ํํํ๊ธฐ ์ํ "๋ค์ด์ด๊ทธ๋จ"์ ์๋ฏธํ๋ค. ์ฌ๋์ด ๋ณด๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํด๋์ ๊ทธ๋ฆผ ๊ฐ์ ๊ฒ์ด๋ค. ๐ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ํ์ค ์ธ๊ณ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ํํํ๋ ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๊ณํ๋ค๊ณ ํ๋๋ฐ, ์ด ..
-
[Database] ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋?๐ปProgramming/Database 2023. 10. 9. 11:05
๋์๋ฆฌ ์คํฐ๋์์ ERD๋ฅผ ์ค๊ณํด๋ณด๋๊ฒ ๊ณผ์ ์ธ๋ฐ, ๊ทธ ๊น์ ์ ๋ฒ ํ๊ธฐ์ ํ๊ต ์์ ์ผ๋ก ๋ค์๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค. ๐ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ํน์ฑ ์ํ์์์ ๋ฆด๋ ์ด์ (relation)๊ณผ ์งํฉ(set)์ ์ด๋ก ์ ๊ธฐ์ด ์ผ๋ฐ์ ์ธ ์ฌ์ฉ์๋ ํ ์ด๋ธ ํํ๋ก ์๊ฐํ์ง๋ง, ํต์์ ์ธ ํ ์ด๋ธ์ ๊ฐ๋ ๊ณผ๋ ๋ค๋ฅด๋ค. ํ ์ด๋ธ์ ์ด(column)์ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ "์ ํธ๋ฆฌ๋ทฐํธ"์ญํ ์ ํ๋ค. ํ ์ด๋ธ์ ํ(row)์ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ์ "ํํ" ์ญํ ์ ํ๋ค. ๐ํ์ ํ ์ด๋ธ: ๋ฆด๋ ์ด์ ํ๋ฒ(Sno) ์ด๋ฆ(Sname) ํ๋ (Year) ํ๊ณผ(Dept) 100 ๋ ธ์์ฌ 2 ์ํํธ์จ์ด์ตํฉํ๊ณผ 200 ๋ ธ๋ด๊ตฌ 1 ํต๊ณํ๊ณผ ์ฌ๊ธฐ์ ์ ํธ๋ฆฌ๋ทฐํธ๋ ํ๋ฒ, ์ด๋ฆ, ํ๋ , ํ๊ณผ์ด๊ณ , ํํ์ (100, ๋ ธ์์ฌ, 2, ์ํํธ์จ์ด์ตํฉํ๊ณผ)์ (200, ๋ ธ๋ด๊ตฌ..
-
[Java] extends์ implements์ ์ฐจ์ด๐ปProgramming/Java 2023. 10. 4. 21:14
์ฐ์ extends์ implements ๋ชจ๋ "์์"์ ๋ํ ๊ฐ๋ ์ด๋ค. Java๋ OOP(Object-Oriented Programming) ์ฆ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ค. ๐ OOP(Object-Oriented Programming) OOP๋ ๊ฐ์ฒด์ ๊ด์ ์์ ํ๋ก๊ทธ๋๋ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. OOP๋ ๊ฐ์ฒด๋ค์ "์ ๊ธฐ์ ์ธ ๊ด๊ณ"๋ฅผ ํตํด์ ํ๋ก์ธ์ค๊ฐ ์งํ๋๋ค. OOP์ ํน์ง 1. ์์๊ณผ ์ธํฐํ์ด์ค 2. ๋คํ์ฑ(ํ๋์ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ๊ฐ์ง ํํ๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ๊ฒ์ ์๋ฏธ), ์ฌ์ฉ ํธ์์ฑ 3. ์บก์ํ, ์ ๋ณด ์๋ 4. ์๋ฃ ์ถ์ํ(๋ชจ๋ธ๋ง) 5. ๋์ ๋ฐ์ธ๋ฉ ๐ ์์ ์์ ํ๋ํ๋๋ ๋ชจ๋ ๊ฐ์ฒด์ด๊ณ , ํด๋์ค์ด๋ค. ์ด๋ฌํ ๊ณ์ธต์ ํํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๊ฒ์ด ๋ฐ๋ก ์์. ์์ ์, ํ์ ๊ฐ์ฒด(์์)์ ์์ ๊ฐ์ฒด(๋ถ๋ชจ..
-
[Error - SpringBoot] mustache ํ๊ธ ๊นจ์ง ํ์๐ปProgramming/Error 2023. 10. 3. 21:26
๐ ์ค๋ฅ ๋ฐ์ ์ํฉ mustache์ ํ๊ธ์ ์จ๋๊ณ , ํ ์คํธ ์ฝ๋๋ฅผ ๋๋ ธ๋๋ฐ assertThat ๋ฉ์๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์คํ๋ง ๋ถํธ๋ก ์์ํ๋ ์น ์๋น์ค ์ด๋ฐ ์ฝ๋์๋๋ฐ package com.sujin.book.springboot.web; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.spri..
-
[Server] JWT๋?๐ปProgramming/Server 2023. 10. 2. 10:00
JWT๋? Json Web Token์ ์ค๋ง๋ก, ๊ทธ๋๋ก ํด์ํ๋ฉด Jsonํ์์ผ๋ก๋ ์น ํ ํฐ์ด๋ผ๋ ๋ง์ด๋ค. ์ ๋ณด๋ฅผ ๋น๋ฐ๋ฆฌ์ ์ ๋ฌํ๊ฑฐ๋ ์ธ์ฆํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์์ ํต์ ํ ๋ ๊ถํ์ ์ํด ์ฌ์ฉํ๋ ํ ํฐ์ด๋ค. JWT๋ ํ ํฐ ์์ฒด์ ์ ๋ณด๋ฅผ ๋ด๋ Self-Contained ํ์์ ์ฌ์ฉํ๋ค. Jsonํํ๋ก ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด์ ํ์ค ๊ท์ฝ์ ๋ฐ๋ผ ์์ฑํ ์ํธํ๋ ํ ํฐ์ผ๋ก ๋ณต์กํ๊ณ ์ฝ์ ์ ์๋ String ํํ๋ก ์ ์ฅ๋์ด ์๋ค. JWT์ ๊ตฌ์ฑ์์ JWT๋ ํค๋(header), ํ์ด๋ก๋(paylod), ์๋ช (signature) ์ธ ํํธ๋ก ๋๋ ์ ธ ์์ผ๋ฉฐ ์๋์ ๊ฐ์ ํํ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. JSON ํํ์ธ ๊ฐ ๋ถ๋ถ์ Base64Url๋ก ์ธ์ฝ๋ฉ ๋์ด ํํ๋๋ค. *Base64Url์ ์ํธํ๋ ๋ฌธ..
-
[Error - JPA] Cannot resolve symbol 'persistence'๐ปProgramming/Error 2023. 9. 25. 11:01
๐ ์ค๋ฅ ๋ฐ์ ์ํฉ build.gradle์ JPA๊ด๋ จ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ๊ณ , ๋ถ๋ช ์์กด์ฑ์ด ์ ์ถ๊ฐ๋ ๊ฒ๋ ํ์ธํ์๋๋ฐ, import javax.persistence.Column; ์์ ์ฝ๋์์ ์๊พธ Cannot resolve symbol 'persistence' ์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค. ๐ ํด๊ฒฐ ๋ฐฉ๋ฒ spring boot3์๋ Jakarta EE 9์ด ํฌํจ๋จ์ ๋ฐ๋ผ javax ๊ด๋ จ ํจํค์ง๋ช ์ด javax์์ jakarta๋ก ๋ณ๊ฒฝ๋์๋ค๊ณ ํ๋ค.-์ฐธ๊ณ (https://thenicesj.tistory.com/391) ๋ฐ๋ผ์ import jakarta.persistence.Column; ์์๊ฐ์ด ์ฝ๋๋ฅผ ๋ฐ๊ฟ์ฃผ๋ฉด ์ค๋ฅ๊ฐ ๋์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฑ (= ์คํ๋ง๋ถํธ์ AWS๋ก ํผ์ ๊ตฌํํ๋ ์น ์๋น์ค)์ ๋ฐ๋ผํ๋ฉฐ..
-
[Spring/SpringBoot] ํธ๋์ญ์ ์ด๋? ์คํ๋ง์ Transactional(feat: AOP)๐ปProgramming/SpringBoot 2023. 9. 25. 00:05
ํธ๋์ญ์ (Transaction)์ด๋? : DB ์ํ๋ฅผ ๋ณํ์ํค๋ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์. = ์ชผ๊ฐค ์ ์๋ ์ฌ๋ฌ ์์ ๋ค์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ต์ ๋จ์๋ก ๋ฌถ์ ๊ฒ ํธ๋์ญ์ ์ ์์ ์ํฉ ์จ๋ผ์ธ ์ผํ๋ชฐ์ ๊ฒฐ์ ํ ๋, ๋๊ฐ์ง ์์ ์ ๊ฑฐ์ณ์ผํ๋ค. 1. ํ๋งค์ฒ์ ๋์ ๋ณด๋ด๊ธฐ 2. ํ๋งค์ฒ์์ ๊ณ ๊ฐ์ด ๋ณด๋ธ ๋์ ๋ฐ๊ธฐ ์ ๋ ์์ ์ด ํ ํธ๋์ญ์ ์ด๋ผ๊ณ ํ์. ์ด ๊ฒฝ์ฐ ๊ณ ๊ฐ์ด ํ๋งค์ฒ์ ๋์ ๋ณด๋๋๋ฐ ํ๋งค์ฒ์์ ๊ณ ๊ฐ์ด ๋ณด๋ธ ๋์ ๋ฐ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋, ๊ณ ๊ฐ์ด ๋์ ๋ณด๋ด์ง ์์๋๋ฐ ํ๋งค์ฒ์์ ๋์ ๋ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋ฉด ์๋๋ค. ๋ชจ๋ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ด์ผ ์์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฉ(commit)ํ๊ณ , ํธ๋์ญ์ ์ ์ํ ๋ชจ๋ ์์ ์ค์(1๋ฒ์ด๋ 2๋ฒ ๋์ค์) ํ๋๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ์์ ์ ์คํํ๊ธฐ ์ ์ ์ํ๋ก..
-
[Error - Git Bash] You have not agreed to the Xcode and Apple SDKs license. You must agree to the license below in order to use Xcode.๐ปProgramming/Error 2023. 9. 20. 22:51
์ค๋ฅ ๋ฐ์ ์ํฉ ์คํฐ๋๋ฅผ ์ํ ๋ฆฌํฌ๋ฅผ ํ์ผ์ ํด๋ก ํ๋ ค๋๋ฐ ๊ฐ์๊ธฐ ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์ฐพ์๋ณด๋ macOS์์ ๊ฐ๋ฐ์ ํ ๋ XCode์ Apple SDKs(์ํํธ์จ์ด ๊ฐ๋ฐ ํคํธ)์ ๋ผ์ด์ ์ค์ ๋์ํด์ผํ๋๋ฐ, ์๋ ์ฒ์ ๊น ๋ฆฌํฌ์งํ ๋ฆฌ ๋ก์ปฌ์ ํด๋ก ํด๋ณธ๊ฒ๋ ์๋๋ฐ ๊ฐ์๊ธฐ ์ด๋ฐ ๋ฌธ๊ตฌ๊ฐ ๋ ์ ๋นํฉ์ค๋ฌ์ ๋ค. (๋ถ๋ช ๋ฉฐ์น ์ ์๋ ํด๋ก ๋ฐ์.) ์ฐพ์๋ณด๋ XCode์ ์ ๋ฐ์ดํธ ํ์ ๋ฐ์ํ๋ ์๋ฌ๋ผ๊ณ ํ๋ค. ํ์ ์ํฐ๋ฅผ ๋๋ ๋๋ ์ฌ๋ฌ ๋ผ์ด์ผ์ค์ ๋ด์ฉ์ด ๋์ค๊ณ ์๋์ ํ๋ฉด์ด ๋์๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ sudo xcodebuild -license ์์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ค๋ค. ๊ทธ๋ผ ๋ ์ซ๋ฅด๋ฅด ๋ผ์ด์ผ์ค ๋ด์ฉ์ด ๋ฌ๋ค. By typing 'agree' you are agreeing to the terms of the software licen..