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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ61

03/08(๊ธˆ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 52์ผ์ฐจ TIL - @OneToOne ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ @OneToOne ๐Ÿฅ” @OneToOne : @OneToOne ์• ๋„ˆํ…Œ์ด์…˜์€ 1:1 ๊ด€๊ณ„๋ฅผ ๋งบ์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. : ๊ณ ๊ฐ Entity์™€ ์Œ์‹ Entity๊ฐ€ 1:1 ๊ด€๊ณ„๋ผ ๊ฐ€์ •ํ•˜์—ฌ ๊ด€๊ณ„๋ฅผ ๋งบ์–ด๋ด…๋‹ˆ๋‹ค. โ—๏ธ ๋‹จ๋ฐฉํ–ฅ ๊ด€๊ณ„ - ์™ธ๋ž˜ํ‚ค์˜ ์ฃผ์ธ ์ •ํ•˜๊ธฐ : Entity์—์„œ ์™ธ๋ž˜ํ‚ค์˜ ์ฃผ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ N์˜ ๊ด€๊ณ„์ธ Entity์ด์ง€๋งŒ 1:1 ๊ด€๊ณ„์—์„œ๋Š” ์™ธ๋ž˜ํ‚ค์˜ ์ฃผ์ธ์„ ์ง์ ‘ ์ง€์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. : ์™ธ๋ž˜ํ‚ค ์ฃผ์ธ๋งŒ์ด ์™ธ๋ž˜ํ‚ค๋ฅผ ๋“ฑ๋ก, ์ˆ˜์ • ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฃผ์ธ์ด ์•„๋‹Œ ์ชฝ์€ ์˜ค์ง ์™ธ๋ž˜ํ‚ค๋ฅผ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. : @JoinColumn()์€ ์™ธ๋ž˜ํ‚ค์˜ ์ฃผ์ธ์ด ํ™œ์šฉํ•˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค. - ์ปฌ๋Ÿผ๋ช…, null ์—ฌ๋ถ€, unique ์—ฌ๋ถ€ ๋“ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Œ์‹ Entity๊ฐ€ ์™ธ๋ž˜ํ‚ค์˜ ์ฃผ์ธ์ธ ๊ฒฝ์šฐ // ์Œ์‹ @E.. 2024. 3. 8.
03/07(๋ชฉ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 51์ผ์ฐจ TIL - Cascade, orphanRemoval ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ Cascade, orphanRemoval ๐Ÿฅ” Cascade (์˜์†์„ฑ ์ „์ด) - ์‚ฌ์šฉ ์œ„์น˜ : ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฃผ์ธ ๋ฐ˜๋Œ€ํŽธ - ๋ถ€๋ชจ ์—”ํ‹ฐํ‹ฐ(N:1 ์—์„œ 1) : ์ฆ‰, @OneToMany๊ฐ€ ์žˆ๋Š” ์ชฝ or @OneToOne๋„ ๊ฐ€๋Šฅ - ์‚ฌ์šฉ ์กฐ๊ฑด : ์–‘์ชฝ ์—”ํ‹ฐํ‹ฐ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•ด์•ผํ•œ๋‹ค. : ex) ๊ฒŒ์‹œ๊ธ€์ด ์‚ญ์ œ๋˜๋ฉด ์ฒจ๋ถ€ํŒŒ์ผ๋„ ๊ฐ™์ด ์‚ญ์ œ ๋˜์–ด์•ผ ํ•œ๋‹ค. : ๋Œ€์ƒ ์—”ํ‹ฐํ‹ฐ๋กœ์˜ ์˜์†์„ฑ ์ „์ด๋Š” ํ˜„์žฌ ์—”ํ‹ฐํ‹ฐ์—์„œ๋งŒ ์ „์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. (๋‹ค๋ฅธ ๊ณณ์—์„œ ๋˜ ๊ฑธ๋ฉด ์•ˆ๋จ) : ex) ์ฒจ๋ถ€ํŒŒ์ผ์„ ๊ฒŒ์‹œ๊ธ€์ด ์•„๋‹Œ ๋‹ค๋ฅธ๊ณณ์—์„œ ์˜์†์„ฑ ์ „์ด๋ฅผ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. - ์˜ต์…˜ ์ข…๋ฅ˜ ALL : ์ „์ฒด ์ƒํƒœ ์ „์ด PERSIST : ์ €์žฅ ์ƒํƒœ ์ „์ด REMOVE : ์‚ญ์ œ ์ƒํƒœ ์ „์ด MERGE : ์—…๋ฐ์ดํŠธ ์ƒํƒœ ์ „์ด REFERESH.. 2024. 3. 7.
03/06(์ˆ˜) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 50์ผ์ฐจ TIL - ORM ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ ORM ๐Ÿฅ” ORM ORM์€ Object Relational Mapping(๊ฐ์ฒด-๊ด€๊ณ„-๋งคํ•‘)์˜ ์•ฝ์ž์ด๋‹ค. ORM์€ ๊ฐ์ฒด์™€ DB์˜ ๊ด€๊ณ„๋ฅผ ๋งคํ•‘ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. ORM์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. ORM์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์˜ ์ค‘๊ณ„์ž ์—ญํ• ์„ ํ•œ๋‹ค. ORM์€ MVC ํŒจํ„ด์—์„œ ๋ชจ๋ธ์„ ๊ธฐ์ˆ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ORM์€ ๊ฐ์ฒด์™€ ๋ชจ๋ธ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. โ—๏ธ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ์ฒด๋กœ ๋งคํ•‘ํ•˜๋ ค๋Š” ์ด์œ  ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„์ด ํŽธ๋ฆฌํ•ด์ง„๋‹ค. ๊ฐ์ข… ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ ๐Ÿฅ” ORM์˜ ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ.. 2024. 3. 6.
03/05(ํ™”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 49์ผ์ฐจ TIL - DAO, DTO, VO ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ DAO, DTO, VO ๐Ÿฅ” DAO, DTO, VO - DAO : Database์— ์ ‘๊ทผํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด - DTO : ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด - VO : ๊ฐ’ ์ž์ฒด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ์ฒด ๐Ÿฅ” DAO (Data Access Object) DB์˜ data์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ด๋‹ค. DB์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ง์ ‘ DB์— ์ ‘๊ทผํ•˜์—ฌ data๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œ, ์กฐํšŒ ๋“ฑ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. MVC ํŒจํ„ด์˜ Model์—์„œ ์ด์™€ ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•จ. ๐Ÿฅ” DTO (Data Transfer Object) DTO๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ด๋‹ค. DTO๋Š” ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋กœ Getter์™€ Setter๋งŒ ๊ฐ€์ง„ ํด๋ž˜์Šค์ด๋‹ค. ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด ๊ฐ„ ๋ฐ์ด.. 2024. 3. 5.
03/04(์›”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 48์ผ์ฐจ TIL - Optional ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ Optional ๐Ÿฅ” Optional - ์ž๋ฐ”8์—์„œ๋Š” Optional ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด Null Pointer Exception ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. - Optional ์€ null์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ๊ฐ์‹ธ๋Š” Wrapper ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. - Optional ์ด ๋น„์–ด์žˆ๋”๋ผ๋„, ์ฐธ์กฐํ•ด๋„ Null Pointer Exception ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - Optional ์€ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๐Ÿฅ” Optional ๊ฐ์ฒด ์ ‘๊ทผ Optional ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” get() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฐฉ๋ฒ•์€ ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ์— ์˜ˆ์˜ค๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ isPresent() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Op.. 2024. 3. 4.
02/29(๋ชฉ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 47์ผ์ฐจ TIL - Git ๋ฉ”์ผ ์ฃผ์†Œ, ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ™•์ธ ๋ฐ ๋ณ€๊ฒฝ ๐Ÿ“– ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ git config ๐Ÿฅ” Git config ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ณ  Contributors์— ์ œ ์•„์ด๋””๊ฐ€ ์•ˆ ๋– ์„œ ์†์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒ€์ƒ‰์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ ํ„ฐ๋ฏธ๋„์— Github ๊ณ„์ •์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์ด ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋‹ค์‹œ ์„ค์ •์„ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. git config --list๋กœ ํ˜„์žฌ ์ด๋ฆ„๊ณผ ์ด๋ฉ”์ผ์„ ํ™•์ธํ•œ ํ›„, git config --global user.name "sample" git config --global user.email "sample@email.com" ์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋‹ค์Œ๋ถ€ํ„ฐ commitํ›„ ๊ทธ๋ž˜ํ”„์— ๋œจ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๐Ÿ“š ์˜ค๋Š˜์˜ ํšŒ๊ณ  ํŒ€ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์šธ ๊ฒƒ์ด ์ฐธ ๋งŽ์•˜๊ณ  ์„ฑ์žฅ์„ ํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ธˆํ† ์ผ ์‰ฌ๋Š” ์ฃผ๋ง ๋™์•ˆ ์—ด์‹ฌํžˆ ๊ฐœ์ธ๊ณต๋ถ€ํ•˜๋ฉฐ ๋” ๋ฐœ์ „.. 2024. 2. 29.