๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ63

[์Šคํ”„๋ง๋ถ€ํŠธ ํ€ต์Šคํƒ€ํŠธ] ch.5 ์Šคํ”„๋ง๋ฐ์ดํ„ฐ JPA CrudRepository ์ธํ„ฐํŽ˜์ด์Šค ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ @Query ์• ๋„ˆํ…Œ์ด์…˜ Querydsl โ–ถ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ํ€ต์Šคํƒ€ํŠธ ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” JPA ์—ฐ๋™์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ ๋ณต์žกํ•œ XML์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด JPA์Šคํƒ€ํ„ฐ๋ฅผ ์ œ๊ณตํ•จ โ€‹ โ–ท ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ์‚ฌ์šฉํ•˜๊ธฐ ๊ธฐ๋ณธ์„ค์ • : application.propertiesํŒŒ์ผ์—์„œ DataSource, JPA, Logging Setting Repository ์ธํ„ฐํŽ˜์ด์Šค๋“ค์˜ ์ƒ์† ๊ตฌ์กฐ ์ตœ๊ณ ์กฐ์ƒ, ๊ธฐ๋Šฅ ๊ฑฐ์˜ ์—†์Œ Repository Spring Data ๋ชจ๋“ˆ์—์„œ ์ œ๊ณต ๋Œ€๋ถ€๋ถ„ ์ด๊ฒƒ ๊ธฐ๋ณธ์ ์ธ CRUD ๊ธฐ๋Šฅ ์ œ๊ณต CrudRepository ๊ฒ€์ƒ‰๊ธฐ๋Šฅ + ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ PagingAndSortingRepository JpaRepository Spring Data JPA.. 2023. 11. 23.
[์Šคํ”„๋ง๋ถ€ํŠธ ํ€ต์Šคํƒ€ํŠธ] ch.4 JPA API persistence.xml EntityManagerFactory EntityManager โ–ถJPA ๊ฐœ๋… โ–ทJPA ๊ฐœ๋… ORM : ๊ฐ์ฒด-๊ด€๊ณ„-๋งคํ•‘์˜ ์•ฝ์ž. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜์„ ์ž๋™ํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ (Object-Relational-Mapping) JPA : ORM๋“ค์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ‘œ์ค€ํ™”์‹œํ‚จ ๊ฒƒ(Java Persistence API) ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA : ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ ์ด๋Ÿฐ JPA๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๋ชจ๋“ˆ. SpringData์˜ ํ•˜์œ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, XML ์„ค์ •์„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•„๋„ ๋จ. โ€‹ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ๊ธฐ์ˆ  SQL์„ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  SQL์„ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š๋Š” ๊ธฐ์ˆ  SQL์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ XMLํŒŒ์ผ์— ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•จ ํ”„.. 2023. 11. 23.
[์Šคํ”„๋ง๋ถ€ํŠธ ํ€ต์Šคํƒ€ํŠธ] ch.3 ํ…Œ์ŠคํŠธ, ๋กœ๊น…, ๋นŒ๋“œ @SpringBootTest logging.level.com.rebypaper=trace โ€‹โ–ถํ…Œ์ŠคํŠธ @SpringBootTest ์• ๋„ˆํ…Œ์ด์…˜์„ ๋ถ™์ด๋ฉด ๋ณต์žกํ•œ ํ…Œ์ŠคํŠธ ์„ค์ •๋“ค์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ํ…Œ์ŠคํŠธ ๊ด€๋ จ ๊ฐ์ฒด๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์คŒ ๊ด€๋ จ์†์„ฑ properties : ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์Šค๋กœํผํ‹ฐ๋“ค์„ k=yํ˜•ํƒœ๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ properties ํŒŒ์ผ์— ์„ค์ •๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ์žฌ์ •์˜ํ•จ classes : ํ…Œ์ŠคํŠธํ•  ํด๋ž˜์Šค๋“ค์„ ๋“ฑ๋กํ•จ. ์ƒ๋žต์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ •์˜๋œ ๋ชจ๋“  ๋นˆ์„ ์ƒ์„ฑํ•จ webEnvironment : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ ์›น๊ณผ ๊ด€๋ จ๋œ ํ™˜๊ฒฝ์„ค์ • ๊ฐ€๋Šฅ โ€‹โ€‹ ๋ชจํ‚น : ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์‹ค์ œ ๊ฐ์ฒด์™€ ๋น„์Šทํ•œ ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ๋ชฉ์—… : ๋ชจํ‚นํ•œ ๊ฐ์ฒด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์–ป์–ด๋‚ด๋Š” ๊ณผ์ • ๋ชจํ‚นํ•˜๋ ค๋ฉด @WebMvcT.. 2023. 11. 23.
[์Šคํ”„๋ง๋ถ€ํŠธ ํ€ต์Šคํƒ€ํŠธ] ch.2 ์˜์กด์„ฑ๊ณผ ์ž๋™์„ค์ • ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ, ํ•„์š”ํ•œ ๋งŒํผ์˜ ๊ธฐ๋Šฅ๋งŒ ์žฌ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ โ–ท์Šคํ”„๋ง๋ถ€ํŠธ์˜ ํ•ต์‹ฌ์š”์†Œ โ‘ ์Šคํƒ€ํ„ฐ : ํŠน์ • ๋ชจ๋“ˆ ์‚ฌ์šฉ์‹œ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๋ฌถ์–ด์„œ ๋งˆ์น˜ ํŒจํ‚ค์ง€์ฒ˜๋Ÿผ ์ œ๊ณต. โ‘ก์ž๋™์„ค์ • : ๋นˆ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•จ โ‘ข์•ก์ถ”์—์ดํ„ฐ : ์Šคํ”„๋ง๋ถ€ํŠธ๋กœ ๊ฐœ๋ฐœ๋œ ์‹œ์Šคํ…œ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ โ€‹ โ–ถ์˜์กด์„ฑ๊ด€๋ฆฌ ์Šคํƒ€ํ„ฐ์˜ ์›๋ฆฌ : (๋ฉ”์ด๋ธ)์Šคํƒ€ํ„ฐ์— ์žˆ๋Š” POMํŒŒ์ผ์˜ ์ƒ์† ๊ตฌ์กฐ. ์—˜๋ฆฌ๋จผํŠธ ์‚ฌ์šฉ. ํ”„๋กœํผํ‹ฐ ์žฌ์ •์˜ ๋ฉ”์ด๋ธ(pom.xml) org.springframework.boot spring-boot-starter-web 2.5.4 ๊ทธ๋ ˆ์ด๋“ค(build.gradle) dependencies { // ๋‹ค๋ฅธ ์˜์กด์„ฑ๋“ค implementation 'org.springframework.boot:spring-b.. 2023. 11. 23.
[๋ณด์•ˆ] ์ฟ ํ‚ค์™€ ์„ธ์…˜ ๊ทธ๋ฆฌ๊ณ  JWT ์„ธ์…˜, ์ฟ ํ‚ค, JWT๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ธ์ฆ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ์ˆ  ์ฟ ํ‚ค (Cookies) ์ฟ ํ‚ค๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก(๋ธŒ๋ผ์šฐ์ €)์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ๋“ค ์žฅ์ : ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ์ถ”์ ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ๊ด€๋ฆฌ, ์‚ฌ์šฉ์ž ์ธ์ฆ, ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„ ๋“ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์ : ์šฉ๋Ÿ‰ ์ œํ•œ(๋Œ€๋žต 4KB)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค HTTP ์š”์ฒญ๋งˆ๋‹ค ์ฟ ํ‚ค ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„๋กœ ์ „์†ก๋˜๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. XSS(Cross-Site Scripting)์™€ ๊ฐ™์€ ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•: ์ฟ ํ‚ค๋Š” Set-Cookie ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ดํ›„ ์š”์ฒญ์— Cookie ํ—ค๋”๋ฅผ ์ž๋™์œผ๋กœ ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค. HttpOnly, Secure, SameSite ๋“ฑ์˜ ์†์„ฑ.. 2023. 11. 23.
Stringํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ๋ชจ์Œ ๋ฐ˜ํ™˜ํƒ€์ž…, ๋ฉ”์„œ๋“œ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ํ‘œ๊ธฐํ•จ int length(): ๋ฌธ์ž์—ด์˜ ๊ธธ์ด(๋ฌธ์ž ์ˆ˜)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. boolean isEmpty(): ๋ฌธ์ž์—ด์ด ๋น„์–ด์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ 0์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. char charAt(int index): ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. int codePointAt(int index): ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ๋ฌธ์ž(UTF-16 ์ฝ”๋“œ ์œ ๋‹›)์— ํ•ด๋‹นํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. int codePointBefore(int index): ์ง€์ •๋œ ์ธ๋ฑ์Šค ์ด์ „์˜ ๋ฌธ์ž์— ํ•ด๋‹นํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. int codePointCount(int beginIndex, int endIndex): ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค ๋ฒ”์œ„ ๋‚ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ .. 2023. 11. 21.
[ch.16] ๋„คํŠธ์›Œํ‚น ๋„คํŠธ์›Œํ‚น ๋‘ ๋Œ€ ์ด์ƒ์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ผ€์ด๋ธ”๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ. ์ปดํ“จํ„ฐ๊ฐ„์˜ ์—ญํ•  ๊ตฌ๋ถ„ ์„œ๋ฒ„: ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ํด๋ผ์ด์–ธํŠธ: ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํ„ฐ “์„œ๋น„์Šค” ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ๋ฐ›์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ. ์„œ๋ฒ„๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ด ํ•„์š”ํ•จ. ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ๋ชจ๋ธ ์„œ๋ฒ„๊ธฐ๋ฐ˜๋ชจ๋ธ: ์ „์šฉ์„œ๋ฒ„๋ฅผ ๋‘๋Š” ๊ฒƒ P2P๋ชจ๋ธ: ์ „์šฉ์„œ๋ฒ„X, ๊ฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์—ญํ• ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ. IP ์ปดํ“จํ„ฐ(ํ˜ธ์ŠคํŠธ)๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์œ ํ•œ๊ฐ’. IP์ฃผ์†Œ(๋„คํŠธ์›Œํฌ ์ฃผ์†Œ/ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ) InetAddress ํด๋ž˜์Šค InetAddressํด๋ž˜์Šค: IP์ฃผ์†Œ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค .. 2023. 11. 21.