1115 - 1124
# 1115 - 1124
# 1115 - ์์๊ณผ ์ปดํฌ์ง์
# ์์๊ณผ composite(์กฐํฉ) ์ด๋?
# ์์
- IS-A๊ด๊ณ๋ก ์ ์๋ ์ ์์ผ๋ฉฐ, ๋ถ๋ชจํด๋์ค๋ฅผ 'ํ์ฅ'ํ๋ ๊ฐ๋ ์ด๋ค.
- ์์์ ๋ฐ์ ์์ํด๋์ค๋, ๋ถ๋ชจํด๋์ค์ ๋ณ์์ ๋ฉ์๋์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ , ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํ ์ ์๋ค. (์์ฑ์, static๋ธ๋ก์ ์์๋์ง ์์ผ๋ฉฐ, private ์ ์ธ์๋ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๊ณ , final์ ์ธ์๋ ์ฌ์ ์๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.)
# ์ปดํฌ์ง์ (์กฐํฉ)
- HAS-A ๊ด๊ณ๋ก ์ ์๋ ์ ์์ผ๋ฉฐ, ๊ธฐ์กด ํด๋์ค๊ฐ ์๋ก์ด ํด๋์ค์ ๊ตฌ์ฑ์์๊ฐ ๋๋ ๊ฒ์ด๋ค.
- ๊ธฐ์กด์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ฉค๋ฒ๋ณ์๋ก ์ด์ฉ, ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
# ์์์ ๋จ์
- ์บก์ํ๋ฅผ ์๋ฐํ๋ค.
- ์์ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌํ๋๋๋์ ๋ฐ๋ผ ํ์ ํด๋์ค์ ๋์์ ์ด์์ด ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ ํด๋์ค์ ๋ด๋ถ ๊ตฌํ์ด ๋ฌ๋ผ์ง๋ฉด ํ์ ํด๋์ค๋ฅผ ๊ณ ์ณ์ผํ ์ ์๋ค.
- ์ค๊ณ๊ฐ ์ ์ฐํ์ง ๋ชปํ๋ค.
- ์ปดํ์ผ ์์ ์ ๊ฐ์ฒด์ Type์ด ์ ํด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ค์ค์์
- ์๋ฐ๋ ๋ค์ค์์์ด ๋ถ๊ฐ๋ฅํ๋ค.
- ๋ฐ๋ผ์ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ๊ณ ์๋ค๋ฉด ์ถ๊ฐ์ ์ผ๋ก ์์์ ๋ฐ์ ์ ์๋ค.
# 1116 - ์ JPA์ Entity๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๊ฐ์ ธ์ผ ํ๋๊ฐ?
์ ํํ ๋งํ์๋ฉด Entity๋ ๋ฐ๋์ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ์์ฑ์๊ฐ ์์ด์ผ ํ๊ณ , ์ด๊ฒ์ public ๋๋ protected์ด์ด์ผ ํ๋ค.
# setter์ ์ ํ
Entity์ ๋ชจ๋ ํ๋์ public setter ๋ฉ์๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝ์ ์ด์ด๋๊ธฐ ๋๋ฌธ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ ์ ์๋ค. ๋ํ ๋จ์ํ setter์ด๊ธฐ ๋๋ถ์ ๊ทธ ์๋๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋ค. setter ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ ๋ณด๋จ ํ์คํ ๋น์ฆ๋์ค๊ฐ ๋๋ฌ๋๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ๋ ์ฑ ๋ฐ๋์งํ๋ค.
# Java Reflection API
Java Reflection API๋?
๊ตฌ์ฒด์ ์ธ ํด๋์ค ํ์ ์ ์์ง ๋ชปํด๋ ๊ทธ ํด๋์ค์ ๋ฉ์๋, ํ์ , ๋ณ์๋ค์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ Java API
์ด๋ฌํ Java Reflection์ ํ์ฉํ๋ฉด ์ปดํ์ผ ์์ ์ด ์๋ ๋ฐํ์ ์์ ์ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๊ฐ์ฒดํํ์ฌ ๋ถ์ ๋ฐ ์ถ์ถํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค.
์์ธํ ๋ด์ฉ์ woowacourse.github.io/javable/post/2020-07-16-reflection-api/ ์ ์ฐธ๊ณ
JPA๋ DB๊ฐ์ ๊ฐ์ฒด ํ๋์ ์ฃผ์ ํ ๋ ๊ธฐ๋ณธ ์์ฑ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ ์ด๋ฌํ Reflection์ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋งคํํ๊ธฐ ๋๋ฌธ์ด๋ค.
# Proxy ๊ฐ์ฒด
JPA๋ ๋งคํํ Entity๋ฅผ ์กฐํํ ๋ ๋ ๊ฐ์ง ์ ๋ต์ ์ฌ์ฉํ๋ค. ์กฐํ ์์ ์ ํจ๊ป ๊ฐ์ ธ์ค๋ EAGER์ ๋งคํํ Entity๋ฅผ ์ฌ์ฉํ ๋ ์กฐํํ๋ LAZY๊ฐ ์๋ค.
์ด๋ฌํ LAZY, ์ง์ฐ๋ก๋ฉ์ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋งคํํ Entity์ ๋์ ๊ฐ์ฒด์ proxy ๊ฐ์ฒด๊ฐ ๋ค์ด์๋ค.
์ ๋ฆฌ
์ ๋ฆฌํ๋ฉด JPA์ ๊ตฌํ์ฒด์ธ hibernate์์ ์ ๊ณตํ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด์๋ public์ด๋ protected ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์ํ๋ค. private๋ก ์์ฑ์๋ฅผ ๋ง๋ค๊ฒ ๋๋ฉด ์ด๋ฌํ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๋๋ฐ ์ ์ฝ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค๋ง ์์ ์ฑ ์ธก๋ฉด์์ ์ข๋ ์์ scope๋ฅผ ๊ฐ์ง protected ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
# 1117 - ์ข์ ์ปค๋ฐ ๋ฉ์ธ์ง ์์ฑํ๊ธฐ์ํ ๊ท์น
๊ธ์์ฑ์ ์ ์ ๋ต์ ์์ผ๋ฉฐ ํ์ ์ด๋ ์ผ๊ด์ฑ์๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ปจ๋ฒค์ ์ ์ ์ฉํ๋ค.
AngularJS Git Commit Message Conventions ์ฐธ๊ณ ํ์ฌ ์์ฑ
# ์ปค๋ฐ ๋ฉ์์ง์ 7๊ฐ์ง ๊ท์น
- ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ์ ๋น ํ์ผ๋ก ๊ตฌ๋ถํ๋ค.
- ์ ๋ชฉ์ 50๊ธ์ ๋ด๋ก ์ ํํ๋ค.
- ์ ๋ชฉ ์ฒซ ๊ธ์๋ ๋๋ฌธ์๋ก ์์ฑํ๋ค.
- ์ ๋ชฉ ๋์ ๋ง์นจํ ๋ฃ์ง ์๊ธฐ
- ์ ๋ชฉ์ ๋ช ๋ น๋ฌธ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ๊ณผ๊ฑฐํ์ ์ฌ์ฉํ์ง ์๋๋ค.
- ๋ณธ๋ฌธ์ ๊ฐ ํ์ 72๊ธ์ ๋ด๋ก ์ ํํ๋ค.
- ์ด๋ป๊ฒ ๋ณด๋ค๋ ๋ฌด์๊ณผ ์๋ฅผ ์ค๋ช ํ๋ค.
# ์ปค๋ฐ ๋ฉ์์ง ๊ตฌ์กฐ
- ํค๋๋ ํ์์ด๋ฉฐ, ๋ฒ์(scope), ๋ณธ๋ฌธ(body), ๋ฐ๋ฅ๊ธ(footer)์ ์ ํ์ฌํญ์ด๋ค.
<type>(<scope>): <subject> -- ํค๋
<BLANK LINE>
<body> -- ๋ณธ๋ฌธ
<BLANK LINE>
<footer> -- ๋ฐ๋ฅ๊ธ
์ ํด๋น ์ปค๋ฐ์ ์ฑ๊ฒฉ์ ๋ํ๋ด๋ฉฐ ์๋ ์ค ํ๋์ฌ์ผ ํ๋ค.
feat : ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ปค๋ฐ
fix : ๋ฒ๊ทธ ์์ ์ ๋ํ ์ปค๋ฐ
build : ๋น๋ ๊ดใน๋
ํ์ผ ์์ ์ ๋ํ ์ปค๋ฐ
chore : ๊ทธ ์ธ ์์ํ ์์ ์ ๋ํ ์ปค๋ฐ
ci : CI๊ด๋ จ ์ค์ ์์ ์ ๋ํ ์ปค๋ฐ
docs : ๋ฌธ์ ์์ ์ ๋ํ ์ปค๋ฐ
style : ์ฝ๋ ์คํ์ผ ํน์ ํฌ๋งท ๋ฑ์ ๊ดํ ์ปค๋ฐ
refactor : ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ๋ํ ์ปค๋ฐ
test : ํ
์คํธ ์ฝ๋ ์์ ์ ๋ํ ์ปค๋ฐ