๋ฐ์ํ ๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ60 [Spring Boot]@RequiredArgsConstructor๋? ๋ง์ด ์ฐ์ด๋ @NoArgsConstructor๋ @AllArgsConstructor๋๋น๊ตํด์ ๋งํ์๋ฉด, @NoArgsConstructornew Member()๊ฐ์ด ์๋ฌด ์ธ์ ์๋ ๊ธฐ๋ณธ ์์ฑ์ ๋ง๋ค์ด์ฃผ๋ ์ ๋ํ ์ด์ ์๊ทผ๋ฐ setter๋ builder ์์ผ๋ฉด ๋ฌด์ธ๋ชจ ์ผ์๋โโ@AllArgsConstructor๋ชจ๋ ํ๋ ๋ฐ์์ ์ด๊ธฐํํ๋ ์์ฑ์ ๋ง๋ค์ด์ฃผ๋ ์ ๋ํ ์ด์ ์new Member("Kim", 20); ์ด๋ฐ์ํ๋๊ฐ ๋ง์ผ๋ฉด ์ธ๋ฐ์์ด ๋ง์ ์ธ์ ์ ๋ฌํด์ผํ ์๋โโ@RequiredArgsConstructor์ฃผ๋ก ์์กด์ฑ ์ฃผ์ (DI)ํ ๋ ๋ง์ด ์ฐ์.final๋ถ์ ํ๋๋, @NonNull๋ถ์ ํ๋๋ง ์์ฑ์์ ํฌํจ๋จ.ํ๋๊ฐ ๋ง์๋, ํ์ํ ํ๋๋ก๋ง ์์ฑ์ ๋ฑ๋ฑ ์ ๋ฆฌ ๊ฐ๋ฅ-> ๊น๋ํจ. ์ @RequiredArgCons.. 2025. 5. 3. [Spring Boot]Entity, Dto, Repository ํท๊ฐ๋ฆฌ๋ ์ฌ๋ ์ค์ธ์ ์ด๋ฏธ ํ์ ์ ํด๋ณด๊ธดํ์ง๋งdto๋ repository, entity ๊ฐ๋ ์์ ๊น ๋ค๋๋ฉด ํท๊ฐ๋ฆฌ๋๊ฒ๊ฐ๋คโ์ฒจ์ ์คํ๋ง๋ถํธ๋ก ๋ฐฑ์๋ ๊ณต๋ถ ์์ํ์๋๋๊ฐ์ฅ ํท๊ฐ๋ ธ๋ ๊ฐ๋ ์โโ์ฌ์ ์ ์๋ฏธ๋ ๋ค๋ค ์ฑ ์ด๋ ๊ตฌ๊ธ๋ง ํ๋ฉด์ ๋ดค์๊ฑฐ๊ฐ์ผ๋๊น ์คํตํ๊ณ ๋น์ ๋ฅผ ๋ค์ด์ ์ค๋ช ํ์๋ฉดโEntity : ์์(๋ฐ์ฐฌ)DTO : ๋ฐ์ฐฌํตRepository : ๋์ฅ๊ณ โ์ด๋ฐ ๋๋์(๋ ๋จธ๋ฆฌ๊ฐ ๋๋น ์ ์ด์ ๋๋ก ์ง๊ด์ ์ธ ๋น์ ๊ฐ ์๋๋ฉด ์ฒจ์ ์ดํด๊ฐ ์ด๋ ค์ ์ ใ ) Entity (์ง์ง ๋ฐ์ฐฌ)์ง์ง ์ ์ฅํด์ผ๋ ์ค์ ๋ฐ์ดํฐ ๊ทธ์์ฒด.๋์ฅ๊ณ (repository)์ ๋ฃ๊ณ ๊บผ๋ผ ์ ์๋ DB๋ 1:1๋ก ์ฐ๊ฒฐ๋ ํด๋์ค์.์ด ํด๋์ค ์์ ์ด์ @Entity, @Id, @Column์ด๋ฐ ์ ๋ํ ์ด์ ๋ถ๋๊ฑฐ์โโDTO (๋ฐ์ฐฌํต)๋ฐ์ดํฐ ์ ๋ฌํ๊ฑฐ๋ ๋ฐ์๋ ์ฐ๋ ์ ์ฉ ์ฉ๊ธฐDB์ ์ ์ฅ.. 2025. 5. 3. [Spring Boot]@Builder ์ ๋ํ ์ด์ ์ ๋ํด ์์๋ณด์, ์์ @Builder ์ ๋ํ ์ด์ @Builder ์ ๋ํ ์ด์ ์ ๋กฌ๋ณต์์ ์ง์ํ๋ ์ ๋ํ ์ด์ ์.ํ๋ง๋๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์คโ์์ฑ์ ์์ ๋ถ์ด๊ฒ ๋๋ฉด, ๋น๋ ํจํด ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด ์์ฑ ํ ์ ์์ด์ ํธํจ.โ์๋ฅผ๋ค์ด ๋น๋ ํจํด ์์ฐ๊ณ ๋ง๋ค๋ฉดnew Article("title1", "abc");์ด๋ ๊ฒ ๋จ.โโ๊ทผ๋ฐ ๋น๋ ํจํด ์ฐ๊ฒ๋๋ฉด Article.builder().title("title1").content("abc").build();์ด๋ ๊ฒ ๋จ!โโ๋น๋ ํจํด ์์ฐ๋ฉด abc๊ฐ ์ด๋ํ๋์ ๋ค์ด๊ฐ๋๊ฐ์ธ์ง ํ์ ํ๊ธฐ ์ข ์ด๋ ค์. ์ฌ๊ธฐ์ ๋ด๊ฐ ์ข ํท๊ฐ๋ ธ๋๊ฒ, @Builder์ ์ญํ ์ด ์์ฑ์์ฒ๋ผ ๋ณด์ด๋๋ฐ@AllArgsConstructor๋ @NoArgsConstuctor์ฒ๋ผ ํด๋์ค ์์ ์๋ถ๊ณ ํ๋๋ก ๋ฐ๋ก ๋บ๋์ง?โ์ผ๋จ @B.. 2025. 5. 3. [Spring Boot] API์ REST API๊ฐ ๋ญ๊น? ์ฝ๊ฒ ์ค๋ช ํด์ค API๋? API๋ ๋งค๊ฐ์ฒด์.๋คํธ์ํฌ์์ ํ๋ก๊ทธ๋จ ๊ฐ ์ํธ์์ฉ์ ์ํ ๋งค๊ฐ์ฒด! ์๋น์์ ์์์ ์ฃผ๋ฌธํ๋๊ฑธ๋ก ์์๋ฅผ ๋ค์ด๋ณด์๋ฉด,์ฐ๋ฆฌ๊ฐ ์๋น์ ๊ฐ์ ์ฃผ๋ฌธํ ๋, ์ฃผ๋ฐฉ์ผ๋ก ์ง์ ๊ฐ์ ์๋ฆฌ์ฌํํ ๋ฌด์จ ์์ ๋ง๋ค์ด์ฃผ์ธ์~ ๋ผ๊ณ ์ํ์์์ ๋ฉ๋ดํ ๋ณด๊ณ ๊ฑฐ๊ธฐ ๋์์๋๋๋ก ์ฃผ๋ฌธํจ!!!๊ทธ๋ฆฌ๊ณ ์จ์ดํฐ๊ฐ ์ฃผ๋ฌธ์ ๋ฐ์ผ๋ฉด, ์ฃผ๋ฐฉ์ ๊ฐ์ @@์๋ฆฌ ๋ง๋ค์ด์ฃผ์ธ์~ ๋ผ๊ณ ํ๊ณ ์๋ฆฌ๊ฐ ๋ค ๋ผ๋ฉด ์จ์ดํฐ๊ฐ ์๋ํํ ์๋ฆฌ๋ฅผ ์ค. ์ฌ๊ธฐ์ ์๋ = ํด๋ผ์ด์ธํธ์๋ฆฌ์ฌ = ์๋ฒ์จ์ดํฐ = API๋ผ๊ณ ์๊ฐํ๋ฉด๋จ. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ดํ์ API ๋ช ์ธ์ (์ด๋ค์์ผ๋ก API๋ฅผ ๋ฐฉ์์ผ๋ก ํธ์ถํ๋ฉด๋๋์ง.. ๋งค๊ฐ๋ณ์ ๋ฉ ๋ฃ์ด์ผํ๋์ง..๋ฑ)๋ผ๊ณ ์๊ฐํ๋ฉด๋จ ๋ค์ ์ค์ ์ํฉ์์ ์์๋ฅผ ๋ค์๋ฉด,์ฐ๋ฆฌ๊ฐ ์น์ฌ์ดํธ ๋ค์ด๋ฒ์ ์ ์ํ๋ ์ํฉ.-> ํด๋ผ์ด์ธํธ๊ฐ url ์ฃผ์์ฐฝ์ ๋ค์ด๋ฒ.com.. 2025. 5. 3. [JPA] ์์์ฑ ์ปจํ ์คํธ๋? ํน์ง ์ ๋ฆฌ JPA์ EntityManager ( ๋งค๋์ก~) JPA : ์๋ฐ์์ ๊ด๊ณํ DB ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ ์ํ interfaceHibernate: JPA ๊ตฌํ์ฒด. (JPA๋ ์ธํฐํ์ด์ค๋๊น ๊ตฌํ์ฒด ํ์) ๋ด๋ถ์ ์ผ๋ก๋ JDBC API ์ฌ์ฉ JPA ์ฃผ์ ์ปจ์ - ์ํฐํฐ ๋งค๋์ - ์์์ฑ ์ํฐํฐ(Entity)? DB ํ ์ด๋ธ๊ณผ ๋งคํ๋๋ ๊ฐ์ฒด. query๋ฅผ ์คํํ๋ ๊ฐ์ฒด.์๋ฐ ๊ฐ์ฒด๋ ๊ฐ์. ๊ทผ๋ฐ DB์ ํ ์ด๋ธ์ด๋ ์ง์ ์ฐ๊ฒฐ๋๋ ํน๋ณํ ์ ๋ผ์ entity๋ผ๊ณ ๊ตฌ๋ถ์ง์ด์ ๋ถ๋ฌ์ฃผ๋๊ฒ ์ํฐํฐ ๋งค๋์ (Entity Manager)?๋ง ๊ทธ๋๋ก ์ํฐํฐ ๊ด๋ฆฌ, DB๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฌ์ด์์ ๊ฐ์ฒด ๋ง๋ค๊ณ ์์ ํ๊ณ ์ญ์ ํ๊ณ ..๋ท๋ฐ๋ผ์งํจ ex) ํ์ 2๋ช ์ด์ ๋์์ ํ์๊ฐ์ ํ๋ ค๋ ๊ฒฝ์ฐ (=๋์์ DB ์ ๊ทผํ๋ ค๋ ๊ฒฝ์ฐ)ํ์A์ ์์ฒญ์ ๋ํด ์ํฐ.. 2025. 5. 3. [Spring Boot]๋ง์ด ์ฐ์ด๋ ์ ๋ํ ์ด์ ์ ์ ์ ๋ฆฌ 1. @Entity ์ ๋ํ ์ด์ Member ๊ฐ์ฒด๋ฅผ JPA๊ฐ ๊ด๋ฆฌํ๋ ์ํฐํฐ๋ก ์ง์ = Member ํด๋์ค & ์ค์ DB ํ ์ด๋ธ์ mapping ํ ์ด๋ธ ์ด๋ฆ ์ง์ ํ์ง ์์ผ๋ฉด, ๊ทธ๋ฅ ํด๋์ค ์ด๋ฆ์ด๋ ๊ฐ์ ์ด๋ฆ์ ํ ์ด๋ธ์ด๋ ๋งตํ๋จ(๋ฐ๋ผ์ ์์ ์์ ์์๋ member ํ ์ด๋ธ)(์ง์ ํ๊ณ ์ถ์ผ๋ฉด,@Entity(name = "member_list") ์ด๋ฐ์์ผ๋ก ํ๋ฉด๋จ 2. @NoArgsConstructor ์ ๋ํ ์ด์ protected ๊ธฐ๋ณธ ์์ฑ์. ์ํฐํฐ๋ ๊ธฐ๋ณธ ์์ฑ์ ๊ผญ ์์ด์ผํจ(์ ๊ทผ์ ์ด์๋ public or protected) 3. @Id ์ ๋ํ ์ด์ @Id ์ ๋ํ ์ด์ ๋ถ์ ํ๋๊ฐ ๊ธฐ๋ณธ ํค๊ฐ ๋จ+ GeneratedValue๋ ๊ธฐ๋ณธํค ์์ฑ ๋ฐฉ์์ ๊ฒฐ์ .(์ฌ๊ธฐ์๋ ์๋ ์ฆ๊ฐ๋ก ์ค์ ๋์ด์์) 4. @Column ์ ๋ํ ์ด์ D.. 2025. 5. 3. ์ด์ 1 ยทยทยท 4 5 6 7 ๋ค์ ๋ฐ์ํ