๐ฉ๐ป ์ ๋ฆฌ๊ธ/๐ WIL
ํ์ ํ๋ก์ ํธํ ๋ DTO๋ ๋ง์ด ์ฌ์ฉํ์ง๋ง, Resource ๊ฐ๋
์ ์ฌ์ฉํ ์ ์ด ์์๋ค.Resource๊ฐ ๋ญ๋ฐ ? ResourceRESTful API์์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผํ๊ณ ์กฐ์ํ ์ ์๋ ๋ฆฌ์์ค๐ REST API์์ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด ์ค๋ฌด ํ๋ก์ ํธ์์๋ Resource๋ฅผ RequestBody๋ก ๋ฐ์ ํ DTO๋ก ๋ค์ convert ํ๊ณ ์์convert๋ DTO๋ฅผ ์๋น์ค ๊ณ์ธต์์ ์ฌ์ฉํ๊ณ ๋ค์ Resource๋ก convertํ์ฌ ๋ฐํํจ DTO (Data Transfer Object)๋ฐ์ดํฐ ์ ์ก์ฉ ๊ฐ์ฒด๋ก, ๋คํธ์ํฌ ๊ฐ ๋๋ ๋ ์ด์ด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉ ์ปจํธ๋กค๋ฌ์ ์๋น์ค ๊ณ์ธต ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ์น ์์ฒญ์ด๋ ์๋ต ๋ฐ์ดํฐ Entity๋ฐ์ดํฐ๋ฒ ์ด์ค์์..
๐ฉ๐ป ์ ๋ฆฌ๊ธ/๐ฃ ํธ๋ฌ๋ธ์ํ
โ ENUM ํ์
์์๋ @NotBlank ์ฌ์ฉ XNo validator could be found for constraint 'javax.validation.constraints.NotBlank' ENUM ํ์
์ ํ๋์ @NotBlank ์ด๋
ธํ
์ด์
์ ๋ถ์ด๊ณ , ์์ฒญ์ ๋ณด๋๋๋ ์์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, @NotBlank๋ CharSequence์๋ง ์ ์ฉ๋๋ฏ๋ก Enum ํ์
์ ํ๋์์๋ ์ฌ์ฉํ ์ ์๋ค. โจ CharSequence๐ ๋ฌธ์์ด์ ๋ํ๋ด๋ ์ธํฐํ์ด์ค๐ String, StringBuilder, StringBuffer, CharBufferโณ๏ธ @NotBlank, @NotNull, @NotEmpty ์ฐจ์ด @NotBlank๐ ๋ฌธ์์ด ํ๋๊ฐ null์ด ์๋๊ณ ๋น ๋ฌธ์์ด์ด ์๋์ด์ผ ..
Java/๐ Effective Java
15. ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ต์ํ ์ ๊ทผ ์ ํ์๋ฅผ ์ ๋๋ก ํ์ฉํ๋ ๊ฒ์ด ์ ๋ณด ์๋(์บก์ํ)์ ํต์ฌ ๋ชจ๋ ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ์ฑ์ ๊ฐ๋ฅํ ํ ์ขํ์ผ ํจํจํค์ง ์ธ๋ถ์์ ์ธ ์ด์ ๊ฐ ์๋ค๋ฉด package-private์ผ๋ก ์ ์ธํ ํด๋์ค์์๋ง ์ฌ์ฉํ๋ package-private ํฑ๋ ๋ฒจ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ ์ด๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค ์์ private static์ผ๋ก ์ค์ฒฉ์ํค๊ธฐโจ public์ผ ํ์๊ฐ ์๋ ํด๋์ค์ ์ ๊ทผ ์์ค์ package-private ํฑ๋ ๋ฒจ ํด๋์ค๋ก ์ขํ๊ธฐ โณ๏ธ ์ ๊ทผ ์์ค private : ๋ฉค๋ฒ๋ฅผ ์ ์ธํ ํฑ๋ ๋ฒจ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ package-private : ๋ฉค๋ฒ๊ฐ ์์๋ ํจํค์ง ์์ ๋ชจ๋ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ. ์ ๊ทผ ์ ํ์๋ฅผ ๋ช
์ํ์ง ์์์ ๋ ์ ์ฉ๋๋ ํจํค์ง ์ ๊ทผ ์์ค.pro..
Database/SQL
โจ ์ข์ ๊ด๊ณํ ๋ชจ๋ธ ์ค๊ณํ๊ธฐ 1. ๋ชจ๋ ํ
์ด๋ธ์ ๊ธฐ๋ณธ ํค๊ฐ ์๋์ง ํ์ธ ํ ํ
์ด๋ธ์ ์๋ ํน์ row์ ๋๋จธ์ง row๋ฅผ ๊ตฌ๋ณํ ์ ์์ด์ผ ํ๋ฏ๋ก ๋ชจ๋ ํ
์ด๋ธ์๋ ์ปฌ๋ผ ํ ๊ฐ ์ด์์ผ๋ก ๊ตฌ์ฑ๋ ๊ธฐ๋ณธํค(PK)๊ฐ ์์ด์ผ ํ๋ค. PK๋ row๋ง๋ค ์ ์ผํด์ผํ๋ฏ๋ก null ๊ฐ์ ๊ฐ์ง ์ ์์์์ ์ ์ธ ๊ฐ์ด์ด์ผ ํจ(๊ฐ์ ๊ฐฑ์ ํ ํ์ X)๊ฐ๋ฅํ ํ ๊ฐ๋จํ ํํ์ฌ์ผ ํจ ๐ ์ด๋ฐ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ = ์๋ฏธ ์๋ ์ซ์ ๋ฐ์ดํฐ๋ก ์๋ ์์ฑ๋๋ ์ปฌ๋ผ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ค์ํ๋ค = null์ด ์๋ ์ธ๋ํค(FK)๊ฐ ์ค์ ๋ ์์ ํ
์ด๋ธ์ ๊ฐ ๋ ์ฝ๋์ ์ผ์นํ๋ ๋ ์ฝ๋๊ฐ ๋ถ๋ชจ ํ
์ด๋ธ์ ์กด์ฌํจ๋ณตํฉ ๊ธฐ๋ณธํค๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์PK๋ฅผ ์ ์ํ ๋ ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ํด๋น ์ปฌ๋ผ์ ์ ์ผ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ด ๋ง๋ ๋ค. ์ปฌ๋ผ ๋..
๐ฉ๐ป ์ ๋ฆฌ๊ธ/๐ WIL
@ToString(doNotUseGetters = true)toString() ๋ฉ์๋ ์๋ ์์ฑgetter ๋ฉ์๋ ์ฌ์ฉํ์ง ์๊ณ ํ๋์ ๊ฐ์ ์ง์ ์ ๊ทผํ์ฌ toString() ๋ฉ์๋ ์์ฑ @VersionJPA/Hibernate์์ ์ํฐํฐ์ ๋ฒ์ ๊ด๋ฆฌ ๐ @Version์ด ๋ถ์ ํ๋๋ ์ํฐํฐ์ ๋ฒ์ ์ ๋ํ๋DB ๋์์ฑ ๋ฌธ์ ๋ฐฉ์งํ๋ ๋ฐ ์ฌ์ฉ๋๊ด์ ๋ฝ(Optimistic lock) ์ง์์ํฐํฐ๊ฐ ์์ ๋ ๋๋ง๋ค ์๋์ผ๋ก ์ฆ๊ฐ DB์์ ์ํฐํฐ๋ฅผ ์
๋ฐ์ดํธํ ๋, ํด๋น ์ํฐํฐ์ ๋ฒ์ ์ด ์ด์ ์ ๋ก๋๋ ๋ฒ์ ๊ณผ ์ผ์นํ์ง ํ์ธ ๋ง์ฝ ์ผ์นํ์ง ์๋๋ค๋ฉด, ๋ค๋ฅธ ํธ๋์ญ์
์ด ํด๋น ์ํฐํฐ๋ฅผ ๋จผ์ ์์ ํ์ผ๋ฏ๋ก OptimisticLockException ๋ฐ์ โณ๏ธ ๋๊ด์ ๋ฝ (Optimistic Locking) ์ด๋ ?๐ ๋ฐ์ดํฐ๋ฒ ์ด..
Java/๐ Effective Java
13. clone ์ฌ์ ์๋ ์ฃผ์ํด์ ์งํCloneable : ๋ณต์ ํด๋ ๋๋ ํด๋์ค์์ ๋ช
์ํ๋ ์ฉ๋์ ์ธํฐํ์ด์คObject์ protected ๋ฉ์๋์ธ clone์ ๋์ ๋ฐฉ์์ ๊ฒฐ์ Cloneable์ ์์ ํด๋์ค์ ์ ์๋ protected ๋ฉ์๋์ ๋์ ๋ฐฉ์์ ๋ณ๊ฒฝ์์ ๊ด๊ณ์ ๋ ํด๋์ค ์ค ํ์ ํด๋์ค์์ super.clone์ ํธ์ถํ๋ค๋ฉด ์๋ชป๋ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง ์ ์์ ๐ ํด๋์ค B๊ฐ ํด๋์ค A๋ฅผ ์์ํ ๋, ํ์ ํด๋์ค์ธ B์ clone์ B ํ์
๊ฐ์ฒด๋ฅผ ๋ฐํํด์ผ ํจ. ํ์ง๋ง A์ clone์ด new A(...)๋ก ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค๋ฉด, B์ clone๋ A ํ์
๊ฐ์ฒด๋ฅผ ๋ฐํ.โณ๏ธ ๊ฐ๋ณ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ Stack ํด๋์ค ๋ณต์ ํ๊ธฐ public class Stack { private..
Java/๐ Effective Java
10. equals๋ ์ผ๋ฐ ๊ท์ฝ์ ์ง์ผ ์ฌ์ ์equals๋ฅผ ์ฌ์ ์ํ๋ ๊ฒฝ์ฐ๋ ...๐ ๋ ๊ฐ์ฒด๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฐ์์ง(๊ฐ์ฒด ์๋ณ์ฑ)๊ฐ ์๋๋ผ ๋
ผ๋ฆฌ์ ๋์น์ฑ์ ํ์ธํด์ผ ํ๋๋ฐ, ์์ ํด๋์ค์ equals๊ฐ ๋
ผ๋ฆฌ์ ๋์น์ฑ์ ๋น๊ตํ๋๋ก ์ฌ์ ์๋์ง ์์ ๋ โณ๏ธ ์ผ๋ฐ ๊ท์ฝ ๋์นญ์ฑ : x.equals(y)๊ฐ true์ด๋ฉด, y.equals(x)๋ true์ถ์ด์ฑ : x.equals(y)๊ฐ true์ด๊ณ , y.equals(z)๋ true์ด๋ฉด, x.equals(z)๋ true์ผ๊ด์ฑ : x.equals(y)๋ฅผ ๋ฐ๋ณตํด์ ํธ์ถํ๋ฉด ํญ์ true ๋๋ false ๋ฐํโณ๏ธ equals ๋ฉ์๋ ๊ตฌํ ๋ฐฉ๋ฒ== ์ฐ์ฐ์ ์ฌ์ฉํด ์
๋ ฅ์ด ์๊ธฐ ์์ ์ ์ฐธ์กฐ์ธ์ง ํ์ธ ๐ ์๊ธฐ ์์ ์ด๋ฉด true ๋ฐํinstanceof ์ฐ์ฐ์๋ก ์
๋ ฅ์ด ์ฌ๋ฐ๋ฅธ ํ..
Java/๐ ์ค๋ธ์ ํธ : ์ฝ๋๋ก ์ดํดํ๋ ๊ฐ์ฒด์งํฅ ์ค๊ณ
โจ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์์์ ํต์ฌ : ์ญํ , ์ฑ
์, ํ๋ ฅ์์ ๋งํ๋ ํด๋์ค, ์์, ์ง์ฐ ๋ฐ์ธ๋ฉ์ด ๊ฐ์ฒด์งํฅ์์ ์ค์ํ์ง ์์ ๊ฒ์ด ์๋์ง๋ง, ์ด๋ค์ ๊ตฌํ ์ธก๋ฉด์ ์น์ฐ์ณ์ ธ ์๋ค. ๊ฐ์ฒด์งํฅ์์์ ํต์ฌ์ ์ญํ , ์ฑ
์, ํ๋ ฅ์ด๋ค. ํ๋ ฅ์ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ ์ ํ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ , ์ ์ ํ ์ฑ
์์ ํ ๋นํ๋ ๊ณผ์ ์์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํต์ฌ์ ํ์ธํ ์ ์๋ค. ํด๋์ค์ ์์๊ณผ ๊ฐ์ ๊ฒ์ ์ฑ
์๊ณผ ํ๋ ฅ์ด ์ด๋ ์ ๋ ์๋ฆฌ๋ฅผ ์ก์ ํ์ ์ฌ์ฉํ ์ ์๋ ๊ตฌํ ๋ฉ์ปค๋์ฆ์ธ ๊ฒ์ด๋ค. ํ๋ ฅ์ด๋ค ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋ฌด์์ธ๊ฐ๋ฅผ ์์ฒญํ๋ ๊ฒ ๐ ๋ฉ์์ง ์ ์ก (์์ฒญ๊ณผ ์๋ต)์์ ์๊ฒ ํ ๋น๋ ์ฑ
์์ ์ํํ ๋ ํ์ํ ์ ๋ณด๋ฅผ ์์ง ๋ชปํ๊ฑฐ๋ ์ธ๋ถ์ ๋์์ด ํ์ํ ๊ฒฝ์ฐ ์ ์ ํ ๊ฐ์ฒด์๊ฒ ๋ฉ์์ง ์ ์กํด์ ํ๋ ฅ ์์ฒญ ๐ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ํ๋๊ณผ ์ํ..