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

TIL59

03/18(์›”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 58์ผ์ฐจ TIL - ORM์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด ์งˆ ๋•Œ ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ ORM ๐Ÿฅ” ORM์„ ์‚ฌ์šฉํ•  ๋•Œ ORM์€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉฐ, DB์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ, ORM์€ ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋ฒˆ์—ญ๊ธฐ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ORM์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ฟผ๋ฆฌ ์ž‘์„ฑ๊ณผ DB ์™€์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ํ›จ์”ฌ ํŽธ๋ฆฌํ•ด์ง€์ง€๋งŒ, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ์—” ORM ๋งŒ์œผ๋กœ๋Š” ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ORM์˜ Query Builder ์‚ฌ์šฉ : ๋Œ€๋ถ€๋ถ„์˜ ORM์€ Query Builder๋ฅผ ์ œ๊ณตํ•˜์—ฌ SQL ์ฟผ๋ฆฌ๋ฅผ ๋™์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฅผ.. 2024. 3. 18.
03/15(๊ธˆ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 57์ผ์ฐจ TIL - StringBuilder ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ StringBuilder ๐Ÿฅ” StringBuilder ์ž๋ฐ”์—์„œ ๋ฌธ์ž์—ด์ด๋ผ๊ณ ํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ String์ด ๋– ์˜ค๋ฆ…๋‹ˆ๋‹ค. String์€ ๋ถˆ๋ณ€๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. String str1 = "abc";, String str2 = "123"; 2๊ฐœ์˜ String๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๋•Œ, ๋งŒ์•ฝ str1 + str2; ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ƒˆ๋กœ์šด String์„ ์ƒ์„ฑํ•˜๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, String๊ฐ์ฒด์™€ String๊ฐ์ฒด๋ฅผ ๋”ํ•˜๋Š” ํ–‰์œ„๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ๋ฐœ์ƒํ•˜์‹œํ‚ค๋ฉฐ, ๋”ํ•˜๋Š” ์—ฐ์‚ฐ์ด ๋งŽ์•„์ง€๋ฉด ์„ฑ๋Šฅ์ ์œผ๋กœ ์ข‹์ง€์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ StringBuilder๋ผ๋Š” ๋…€์„์ด ๋‚˜์™”์Šต๋‹ˆ๋‹ค. StringBuilder๋Š” String๊ณผ ๋ฌธ์ž์—ด์„ ๋”ํ•  ๋•Œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ์— ๋”ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ.. 2024. 3. 15.
03/14(๋ชฉ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 56์ผ์ฐจ TIL - AWS ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ AWS ๐Ÿฅ” AWS ํด๋ผ์šฐ๋“œ AWS๋Š” Amazon Web Services์˜ ์•ฝ์–ด๋กœ, ์•„๋งˆ์กด๋‹ท์ปด์ด ์ œ๊ณตํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. AWS๋Š” ์ „ ์„ธ๊ณ„์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ ๊ณ ๊ฐ์—๊ฒŒ IT ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๊ฐ์€ ํ•„์š”ํ•œ ์ธํ”„๋ผ๋ฅผ ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ—๏ธAWS ์ฃผ์š” ์„œ๋น„์Šค ์ปดํ“จํŒ… : EC2 (Elastic Compute Cloud), Elastic Beanstalk ๋“ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : RDS (Relational Database Service) ๋“ฑ ์Šคํ† ๋ฆฌ์ง€ : S3 (Simple Storage Service) , EBS (Elastic Block Store) ๋“ฑ ๋„คํŠธ์›Œํ‚น : VPC (Virtual Private Cloud), Clou.. 2024. 3. 14.
03/13(์ˆ˜) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 55์ผ์ฐจ TIL - Spring AOP ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ Spring AOP ๐Ÿฅ” Spring AOP Spring AOP (Aspect-Oriented Programming)๋Š” ๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•œ ํ˜•ํƒœ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ชจ๋“ˆํ™”ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ฐ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. Spring AOP์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ์™€ ๊ฐœ๋…์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. Aspect (๊ด€์ ) : ๊ด€์ ์€ ํŠน์ •ํ•œ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊น…, ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ, ๋ณด์•ˆ ๋“ฑ์ด ๊ด€์ ์˜ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. Join Point (๊ฒฐํ•ฉ ์ง€์ ) : ๊ฒฐํ•ฉ ์ง€์ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์ค‘์— Aspect๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ, ์˜ˆ์™ธ ๋ฐœ์ƒ .. 2024. 3. 13.
03/12(ํ™”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 54์ผ์ฐจ TIL - QueryDSL ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ QueryDSL ๐Ÿฅ” QueryDSL? : QueryDSL์€ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์ฟผ๋ฆฌ ์–ธ์–ด์˜ ์ฟผ๋ฆฌ๋ฅผ ํƒ€์ž…์— ์•ˆ์ „ํ•˜๊ฒŒ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. : QueryDSL์€ ์ •์  ํƒ€์ž…์„ ์ด์šฉํ•˜์—ฌ SQL๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. : ์ž๋ฐ” ๋ฐฑ์—”๋“œ์—์„œ๋Š” Spring Boot์™€ Spring Data JPA๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. : ํ•˜์ง€๋งŒ, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, ๋™์  ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. : ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด QueryDSL์ž…๋‹ˆ๋‹ค. : QueryDSL์ด ๋“ฑ์žฅํ•˜๊ธฐ ์ด์ „์—๋Š” Mybatis, JPQL, Criteria ๋“ฑ : ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ์ปดํŒŒ์ผ ์‹œ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์˜€์Šต๋‹ˆ๋‹ค. : ํ•˜์ง€๋งŒ, QueryDSL์€ ์ž๋ฐ” ์ฝ”๋“œ๋กœ S.. 2024. 3. 12.
03/11(์›”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 53์ผ์ฐจ TIL - SOLID ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ SOLID ๐Ÿฅ” SOLID(๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„์›์น™) ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responsibiity Principle - SRP) ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™ (Open/Closed Principle - OCP) ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ (Liskov Substitution Principle - LSP) ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ (Interface Segregaion Principle - ISP) ์˜์กด ์—ญ์ „ ์›์น™ (Dependency Inversion Principle - DIP) ๐Ÿฅ” ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (SRP) : ์ด ์›์น™์€ ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์€ ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. : ์ฆ‰, ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ์ฑ…์ž„ ๋•Œ๋ฌธ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. : ์ด๋Š” ์ฝ”๋“œ์˜ ์‘์ง‘์„ฑ์„ ๋†’.. 2024. 3. 12.