๐ป ๋ฐฑ์๋ ๊ฐ๋ฐ7 Jackson SnakeCase / CamelCase ํ๋ฒ์ ๋ณ๊ฒฝ ํ๊ธฐ ์์ํ๋ฉฐ ์ค๋์ ํน์ GW์์๋ ์นด๋ฉ ์ผ์ด์ค๊ฐ ์๋๋ผ ์ค๋ค์ดํฌ ์ผ์ด์ค๋ก ์๋ต์ ์ค์ผ ํ๋ ์ํฉ์ด ์๊ฒผ๋ค. ๊ฐ๋ฐ์๋ค์ ์ ํต์ ์ผ๋ก ๋ฐ๋ณต ์์ ์ ์ซ์ดํ๊ณ key๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด์ ๋ชจ๋ key ๋ง๋ค, @JsonProperty ๋ฅผ ๋ฃ์ด์ฃผ๊ธฐ์... ๋ฌด๋ฆฌ๊ฐ ์๋ค. ์ด๋ ธํ ์ด์ ํ๋๋ก ํธ๋ฆฌํ๊ฒ ๋ณ๊ฒฝ์ ํด๋ณด์. @JsonProperty ๋ฉ์ถฐ! ํด๋น Task๋ฅผ ๋ค๋ฅธ ๋ถ์๊ฒ ๋ถํ์ ํ๋๋ Response ๊ฐ์ฒด์ Data Class์ @JsonProperty๋ก ๋ก์น ์ ํด๋์๋ค. ๋ฌผ๋ก ์ด๋ ๊ฒ ํด๋ ๊ฐ๋ฐ์ ๋ฌธ์ ๊ฐ ์๊ณ ๋์์๋ ๋ฌธ์ ๋ ์๋ค. ํ์ง๋ง ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ , ์์งํ ๊ท์ฐฎ๋ค. @JsonNaming์ ์จ๋ณด์ ์ด๋ ธํ ์ด์ ํ๋๋ก ์์ฝ๊ฒ, ์ค๋ค์ดํฌ์ผ์ด์ค์ ์นด๋ฉ์ผ์ด์ค๋ฅผ ๋ณ๊ฒฝ ํ ์ ์๋ค. ์๋์ ์์ ์ฝ๋๋ฅผ ๋ณด์. @JsonN.. 2021. 10. 20. 03. Soft Delete ๋ ํธํ๊ฒ ํ๊ธฐ ๋ค์ด๊ฐ๋ฉฐ DB๋ฅผ ๋ง๋ค๋ฉด์ ์ฐ๋ฆฌ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐฉ์ ์ค๋ช Soft Delete `UPDATE table SET delete = 1 WHERE id = 2` ํํ๋ก ROW๊ฐ ์ญ์ ๋์ง ์๊ณ flag๋ฅผ ํตํ ์ ์ด ํ๋ ๋ฐฉ์ Hard Delete DELETE FROM table WHERE id = 2 ํํ๋ก ROW๊ฐ ์ค์ ๋ก ์ญ์ ๋๋ ๋ฐฉ์ `Hard Delete`๋ฅผ ํ๋ ๊ฒฝ์ฐ๋ ์์ง๋ง, `Soft Delete`๋ฅผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์ JPA Entity Graph ์ ๊ฒฝ์ฐ๋ `Soft Delete`์ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ด ๋ด๊ฒจ์ ์จ๋ค. `Application level์์ ํํฐ ํ๋ฉด ๋๋๊ฑฐ ์๋๋? ` ๋ผ๊ณ ์๊ฐ ํ ์ ์์ง๋ง, ์ธ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ก์ง์ ๊ตฌ๋ฉ์ด ๋ง์ด ์๊ธธ ์ ์.. 2021. 7. 15. 02. ๋น์ ์ @Transactional์ readOnly ์ต์ ์ ์ฐ๊ณ ์๋์? ์์ํ๋ฉฐ ์ค๋์ Spring์์ ๋ง๋ฒ์ ์ด๋ ธํ ์ด์ ์ด๋ผ๊ณ ๋ถ๋ฅด๋ @Transactional์ readOnly ์ต์ ์ ๋ํ์ฌ ์ด์ผ๊ธฐํด๋ณด๋ ค๊ณ ํ๋ค. ์ฅ? @Transactional์๋ readOnly๋ผ๋ ์ต์ ์ด ์๋๋ฐ? ์ฅ? @Transactional์๋ readOnly ์ต์ ์ด ์๋๋ฐ ์ด๊ฒ ๋ฌด์จ์ผ์ด์ฃ ? ์๋ ๊ฑธ๋ก ์ด์ผ๊ธฐ๋ฅผ ํ๋ ค๊ณ ํ๋ ๊ฑด๊ฐ? ์ฐ๋ฆฌ๋ ์ด๋ฒ readOnly ์ด์ผ๊ธฐ๋ฅผ ํ๊ธฐ ์ ์ @Transactional์ 2๊ฐ์ง ์๋ค๋ ๊ฒ์ ์ด์ผ๊ธฐํ๊ณ ๋์ด๊ฐ๋ ค๊ณ ํ๋ค. ์ด 2๊ฐ์ง๊ฐ ๊ถ๊ทน์ ์ผ๋ก ํ๋ ค๊ณ ํ๋ ์ผ์ ๋์ผํ๋ค. (์ค์ Spring AOP ์์์๋ javax ํจํค์ง์ ํธ๋์ ์ ๊ณผ Spring ํจํค์ง์ ํธ๋์ ์ ๋ ๋ชจ๋ ์ง์ํ๊ณ ์๋ค.) Spring ํจํค์ง๋ฅผ ํตํด ์ ๊ณต๋๋ ์ด๋ ธํ ์ด์ ์ด ๋ ๋ง์ ์ต์ ์ ์ ๊ณตํ๊ฒ ๋.. 2021. 2. 4. 01. ์์๋๋ฉด ์ธ๋ผ์๋ GeneratedValue ์ด์ผ๊ธฐ Part1 ์์ํ๋ฉฐ ์ฐ๋ฆฌ๋ Entity๋ฅผ ๋ง๋ค ๋ ์ฐ๋ฆฌ๋ PK (Primary Key)๋ฅผ ์ง์ ํ๋ค. ๊ทธ์ค์์๋ Primary Key๋ฅผ ์ ํํ ๋, ์ ๋ต์ ์ผ๋ก ์๊ฐํ์ ๋ ์์ฐจ ์ฆ๊ฐ ๊ฐ์ ํฌ๊ธฐํ ์๊ฐ ์๋ค. ๊ณผ์ฐ ๊ทธ๋ผ JPA์์๋ ์ด๋ฐ ๋์ฒด ํค๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๊ณ , ์ด๋ค์์ผ๋ก ๋์ํ๋์ง์ ๋ํด ์์๋ณด๋๋ก ํ์. GeneratedValue๋? import javax.persistence.*; import java.io.Serializable; import java.time.LocalDateTime; @Table(name = "coupon") @Entity @Getter @Setter public class Coupon implements Serializable { private static final long seria.. 2020. 6. 4. Spring ์ด ์ ๋๋ ํด์ค์ผ์ง - 01. ์์ํ๋ฉฐ ๊ฑฐ ์ ๋ชฉ์ด ๋๋ฌด ์๊ทน์ ์ธ๊ฑฐ ์๋์? ์ ๋ชฉ์ ์๋ ์๊ทน์ ์ด๊ฒ ์ ๋๊ฑฐ๋ค. ๊ทธ๋์ผ "์ด๋๋ณด๊ฒ~" ํ๋ ์๊ทน์ ์ฃผ๋ฉด์ ์ฌ์ฉ์๊ฐ ์ ์ ๋๊ฒ ๋๋ค. ์ฌ์ค ์ต๊ทผ์ ์ง์ธ์ ํตํด @city7310 ๋์ '๋ฐฑ์๋๊ฐ ์ด์ ๋๋ ํด์ค์ผํจ'์์ ์์ด๋์ด๋ฅผ ์ป์ด์, 'Spring ์ด์ ๋๋ ํด์ค์ผ์ง' ์ผ๋ก ์ ๋ชฉ์ ๊ฐ์ง๊ฒ ๋์๋ค. ๋ฐฑ์๋๊ฐ ์ด์ ๋๋ ํด์ค์ผ ํจ - 1. ์ปจํ ์ธ ์ ๋๊ธฐ์ ๊ฐ์ ํ์๊ฐ ๊ณ ๋ฑํ๊ต 1ํ๋ ๋ง์ ์ฒ์์ผ๋ก ๋ฐฑ์๋ ํฌ์ง์ ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ, ๋ฉ์ฒญํ๋ ๊ณผ๊ฑฐ ์ด์ผ๊ธฐ์ ์ด ์ปจํ ์ธ ๋ฅผ ๊ธฐํํ ๋๊ธฐ๋ฅผ ๊ณต์ ํฉ๋๋ค. velog.io ์ด ์ฐ์ฌ๋ ์ ์์ํ๊ฒ ๋์๋์? ์ต๊ทผ ์ฃผ๋ณ์์ ์ฌ๋ฌ๊ฐ์ง ์ด์ ๋ก, Spring์ ๊ด์ฌ์ ๊ฐ์ง๋ ์ /ํ๋ฐฐ๋ค์ด ๋ง์์ก๋ค. ๊ทผ๋ฐ ์ด๋ค์ด ๋ฌผ์ด๋ณด๋ ๋ด์ฉ์ด ๊ฑฐ๊ธฐ์ ๊ฑฐ๊ธฐ๊ณ , ๋งค๋ฒ ๋๊ฐ์ ๋ด์ฉ ๋ค์ ์ค๋ช ํด์ฃผ๊ธฐ.. 2020. 5. 7. ๋์ฉ๋ ํธ์ ๋ฐ์ก ์์คํ ๊ฐ๋ฐ๊ธฐ - (1) ์์ B2B ์๋น์ค์ ๋ํ ์ง๋ฃจํจ์ ๋๋ผ๋ ์ํฉ์์, ํ์ฌ ์ค์ฅ๋์ ์ถ์ฒ์ผ๋ก B2B ์๋น์ค ํ์์ B2C ์๋น์คํ์ผ๋ก ํ์ ์ฎ๊ธฐ๊ฒ ๋์๋ค. ๋ฌธ์ ์ ์์ ์ฝ 6๋ ๊ฐ ๊ณต์์ด๋ B2C ์๋น์ค ์๋ฒ ๊ฐ๋ฐ์์ ์๋ฆฌ์ ๋ด๊ฐ ๋ค์ด๊ฐ๊ฒ ๋์๋๋ฐ, ์ด๋ ์ ๋ ์์์ ํ์ง๋ง ๊ณต์์ ๋ฌธ์ ๋ ์๊ฐ๋ณด๋ค ์ปธ๋ค. ์ฒ์์ ํ์ ์์ ๋, ์ ๋ง ๋ง์ ๋ฌธ์ ๊ฐ ์์์ง๋ง, ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ํธ์ ์ ์ก ์์คํ ์ด ์์ด์, ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์๊ฐ ์ผ๋ช ๋๋ ค์น๊ธฐ (๋๋นต) ํ๋ฉด์ ๊ฒจ์ฐ ๊ฒจ์ฐ ์๋น์ค๊ฐ ์ด์๋๊ณ ์์๋ค. ์ด๋ ๊ฒ ๋์๊ฐ๋๋ฐ ๋ฌธ์ ๊ฐ ์์๋? ๋น์ฐํ ์๋น์ค์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ง์๊ณ , ๊ทธ๋ฌ๋ค ๋ณด๋ ์ ์ ์๊ฒ ์ข์ง ๋ชปํ ๊ฒฝํ์ด ๋ง์ด ๋ ธ์ถ ๋๊ฒ ๋๊ธฐ๋ ํ์๊ณ , ๋น์ฉ์ ์ธ ๊ด์ ์์ ๋ดค์ ๋๋ ๋นํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋น์ฉ์ด ๋ง์๋ค. ๋ํ, ์ฐ๋ฆฌ ํ์ 2020๋ ๋ก๋๋งต์ .. 2020. 3. 9. MSA ๊ณ ๊ตฐ๋ถํฌ๊ธฐ — (1) JAVA์ DNS Cache ์ด์ ํด๊ฒฐ๊ธฐ ๋ด๊ฐ ๋ง๋ ์๋น์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก DNS ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค๋ฅผ ๋ค ํ๊ณ ์๋ค. account.yangs.internal , search.yangs.internal, mariadb.yangs.internal ๋ฑ๋ฑ.. ์๋น์ค์ค์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ผ๋ก ์ธํ์ฌ ํน์ ์๋ง์กด ๋ด๋ถ์ ์ด์๊ฐ ์๊ธฐ๋ฉด DNS์ IP๋ฅผ ์ค์์นญํด์ HAํ๋ ํํ๋ก ์ด์์ค์ด์๋ค. ์ด๋๋ ์ DB์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ, ์๋์ผ๋ก IP๊ฐ ๋ณ๊ฒฝ๋์๋๋ฐ Application ๋ ๋ฒจ์์ ์ ํ์ด ์งํ์ด ์๋์ด์ ์ฌ๊ธฐ๋์ผ๋ก ํด๊ฒฐ ํ ๊ธฐ์ต์ด ์๋ค. DNS ์๋ฒ ์ค์ ๋ฌธ์ ์ธ๊ฐ ๋ดค๋๋ฐ, DNS์๋ฒ์ ๋ฌธ์ ๊ฐ ์๋ JAVA ํด๋ผ์ด์ธํธ ์ DNS Cache ์ ์ฑ ์ผ๋ก ์ธํ์ฌ ๋ฐ์ํ ์ด์์๋ค. ์ค๋์ ๊ทธ ์ด์ผ๊ธฐ๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. DNS ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ JAVA์ ์ ์ฑ .. 2020. 1. 6. ์ด์ 1 ๋ค์