๐ŸŒ WEB

๋ชฉํ‘œ - ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฐจ์ด๋ฅผ ์ดํ•ด - ๊ฐ์ฒด์˜ ์ฐธ์กฐ์™€ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ ํ‚ค๋ฅผ ๋งคํ•‘ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„์˜ ์ฐจ์ด๋ฅผ ์ดํ•ด ๊ฐ์ฒด๋ฅผ ํ…Œ์ด๋ธ”์— ๋งž์ถ”์–ด ๋ชจ๋ธ๋ง ํ–ˆ์„ ๋•Œ ๋ฌธ์ œ์  (์ฐธ์กฐ ๋Œ€์‹ ์— ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ) ํ˜‘๋ ฅ ๊ด€๊ณ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค. ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ ํ‚ค๋กœ ์กฐ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ์—ฐ๊ด€๋œ ํ…Œ์ด๋ธ”์„ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฒˆ๊ฑฐ๋กœ์šด ์ฝ”๋“œ๊ฐ€ ๋ฐœ์ƒ๋œ๋‹ค. Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setUsername("member1"); // ์™ธ๋ž˜ํ‚ค ์‹๋ณ„์ž๋ฅผ ์ง์ ‘ ๋‹ค๋ฃฌ๋‹ค. member.setTeamId(team.getId()); em.persist(member); // ๋ฉค๋ฒ„์˜ ..
๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๋งคํ•‘ @Entity - @Entity๊ฐ€ ์ •์˜๋˜์–ด์žˆ๋Š” ํด๋ž˜์Šค๋Š” JPA๊ฐ€ ๊ด€๋ฆฌํ•œ๋‹ค. - ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ๊ผญ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ์†์„ฑ: name ->JPA์— ์‚ฌ์šฉํ•  ์—”ํ‹ฐํ‹ฐ ์ด๋ฆ„์„ ์ง€์ •ํ•œ๋‹ค, ๊ธฐ๋ณธ๊ฐ’ : ํด๋ž˜์Šค ์ด๋ฆ„์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ @Table - name, catalog, schema ๋“ฑ๋“ฑ. . ํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘ @Column ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋Ÿผ๋ช…์„ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. unique(์‹ค๋ฌด์—์„œ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค -> ์œ ๋‹ˆํฌ ์ œ์•ฝ์กฐ๊ฑด ์ด๋ฆ„์„ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค ๋Œ€์‹  @Table(uniqueCons.. ์‚ฌ์šฉ), length ๋“ฑ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. @Temporal ๋‚ ์งœ ํƒ€์ž… ๋งคํ•‘ ํ•˜์ง€๋งŒ LocalDate, LocalDateTime์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. @Enumerated enum ํƒ€์ž… ๋งคํ•‘ default..
JPA์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ 2๊ฐ€์ง€ - ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งคํ•‘ํ•˜๊ธฐ - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ญ˜๊นŒ? JPA๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์šฉ์–ด์ด๋‹ค. "์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ํ™˜๊ฒฝ"์ด๋ผ๋Š” ๋œป. -> EntityManager.persist(entity); - persist๋Š” ์‚ฌ์‹ค DB์— ์ €์žฅํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ  Entity๋ฅผ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. - ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…์œผ๋กœ ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. EntityManager๋ฅผ ํ†ตํ•ด์„œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•œ๋‹ค. - ์—ฌ๋Ÿฌ๊ฐœ์˜ EntityManager๊ฐ€ ํ•˜๋‚˜์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฐ”๋ผ๋ณธ๋‹ค. ์—”ํ‹ฐํ‹ฐ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๋น„์˜์† - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์™€ ์ „ํ˜€ ๊ด€๊ณ„๊ณผ ์—†๋Š” ์ƒˆ๋กœ์šด ์ƒํƒœ ์˜์† - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ๊ด€๋ฆฌ๋˜๋Š” ์ƒํƒœ ์ค€์˜์† - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ €์žฅ๋˜..
์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์„ ๋•Œ ์ €์žฅ์ด ๋ ๊นŒ? ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธด๋‹ค. ์™œ๋ƒํ•˜๋ฉด JPA๋Š” ํŠธ๋ Œ์ ์…˜์ด๋Š” ๋‹จ์œ„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— JPA์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ํŠธ๋ Œ์ ์…˜ ์•ˆ์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค. EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); Member member = new Member(); member.setId(1L); member.setName("AE"); em.persist(member); em.close(); emf.close(); ํŠธ๋ Œ์ ์…˜์„ ์ถ”๊ฐ€ํ•œ ์ฝ”๋“œ EntityManagerFactory emf = Persistence.createEntityMa..
www.inflearn.com/course/ORM-JPA-Basic/dashboard ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ JPA๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ฑฐ๋‚˜, ์‹ค๋ฌด์—์„œ JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด JPA์˜ ๊ธฐ๋ณธ ์ด๋ก ์„ ํƒ„ํƒ„ํ•˜๊ฒŒ ํ•™์Šตํ•ด์„œ ์ดˆ๋ณด์ž๋„ ์‹ค๋ฌด์—์„œ ์ž์‹ ์žˆ๊ฒŒ JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., ๋ณธ ๊ฐ•์˜๋Š” ์ž๋ฐ” ๋ฐฑ์—” www.inflearn.com ์ธํ”„๋Ÿฐ์— ์žˆ๋Š” ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค! ๋ชฉํ‘œ : ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ์„ค๊ณ„ ๋งคํ•‘ - ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ์ œ๋Œ€๋กœ ์„ค๊ณ„ํ•˜๊ณ  ๋งคํ•‘ํ•˜๋Š” ๋ฐฉ๋ฒ• - ๊ธฐ๋ณธ ํ‚ค์™€ ์™ธ๋ž˜ ํ‚ค ๋งคํ•‘ - 1:N, N:1, 1:1, N:M ๋งคํ•‘ - ์‹ค๋ฌด ๋…ธํ•˜์šฐ + ์„ฑ๋Šฅ ๊ณ ๋ ค - JPA ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ดํ•˜๊ธฐ - JPA๊ฐ€ ์–ธ์ œ, ์–ด๋–ค SQL์„ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ•˜๋Š”์ง€ ์ดํ•ด J..
jsp๋งŒ ๋ฐฐ์šฐ๊ณ  ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ต์ˆ™ํ•ด์ง„ ๊ฒƒ์„ ๊ณ„์† ์“ฐ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ Spring Boot๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ Thymeleaf๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์ ์œผ๋กœ Spring boot์—์„œ jsp ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๋‚ด์žฅํ†ฐ์บฃ์ด๊ธฐ ๋•Œ๋ฌธ์— war๋กœ ํŒจํ‚ค์ง•์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spring boot๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ž…์žฅ์—์„œ๋Š” ์•ฝ๊ฐ„ ๐Ÿคจ์ž…๋‹ˆ๋‹ค. Thymeleaf๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์˜์กด์„ฑ์„ ๋จผ์ € ์ถ”๊ฐ€ ํ•ด์ค๋‹ˆ๋‹ค. build.gradle implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' application.yml์—๋„ ๊ด€๋ จ ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. jsp๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฒ˜๋Ÿผ ์œ„์น˜์™€ ํŒŒ์ผํ˜•์‹์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค application.yml spri..
Jpa pageable์„ ์ž˜๋ชจ๋ฅด์‹œ๋Š” ๋ถ„์€ ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”~! 2021/02/03 - [WEB/JPA] - JAP Pageable ์‚ฌ์šฉํ•˜๊ธฐ JAP Pageable ์‚ฌ์šฉํ•˜๊ธฐ Page๊นŒ์ง€ ์™”๋‹ค๋Š”๊ฑด... ๊ธฐ๋ณธ์ ์ธ CRUD๋ฅผ ์•Œ๊ณ  ๊ณ„์‹  ์ƒํƒœ๋กœ ์ดํ•ดํ•˜๊ณ  ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ํ• ์ผ : ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— Page, Sort ๊ตฌํ˜„ํ•˜์—ฌ API๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. Service Entity์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฑด ์ ˆ๋•Œ๋กœ ํ•˜์ง€ ์•Š aejeong.com ์„ค์ • ์„ธํŒ… ๋ถ€ํ„ฐ ํ•ด๋ณผ๊ฒŒ์š” ~! 1. build.gradle implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 2. application.yml spring: thymeleaf: prefix: classp..
Page๊นŒ์ง€ ์™”๋‹ค๋Š”๊ฑด... ๊ธฐ๋ณธ์ ์ธ CRUD๋ฅผ ์•Œ๊ณ  ๊ณ„์‹  ์ƒํƒœ๋กœ ์ดํ•ดํ•˜๊ณ  ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ํ• ์ผ : ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ ๋ฐ์ดํ„ฐ์— Page, Sort ๊ตฌํ˜„ํ•˜์—ฌ API๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. Service Entity์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฑด ์ ˆ๋•Œ๋กœ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Response dto๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋กœ ํ•ฉ๋‹ˆ๋‹ค. Repository์—์„œ ๋ฐ›์•„์˜จ Page UserEntity๋ฅผ Response์— ๋งตํ•‘ํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜ํ™˜ํ• ๋•Œ ์ƒ์„ฑ์ž์— stream์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ ๋งตํ•‘ ํ•ด์ค๋‹ˆ๋‹ค! ์—ฌ๊ธฐ์„œ finAny().orElse("") ๋Š” user์˜ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— NPE์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— null์ผ ๊ฒฝ์šฐ String ํƒ€์ž…์˜ null์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ถ€๋ถ„์€ ์ข€๋” ์ฐพ์•„์„œ ์—…๋ฐ์ดํŠธ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! public Page..
์•„์ฃผ ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๊นŒ์ง€ ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค.. ์™œ๋ƒ๋ฉด... ์ €๋„ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋“ค์„ ๋ณด๋ฉด์„œ ๋น ์ ธ์žˆ๋Š” ๋ถ€๋ถ„์„ ๋ณด๋ฉด ๋‚˜๊ฐ™์€ ์ดˆ๋ณด๋Š” ์–ด์ฉŒ๋ผ๊ณ  ํ•˜๋ฉฐ ์Šฌํผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—,,, ์‚ฌ์‹ค Security์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ Filter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JWT ๋ฐฉ์‹์„ ์ด์šฉํ•˜๋Š”๊ฒŒ ๋งž์ง€๋งŒ ํ”„๋กœ์ ํŠธ ํฌ๊ธฐ,, ๊ธฐ๊ฐ„์ƒ ๋ถˆํ•„์š”ํ•˜๋‹ค ํŒ๋‹จํ•˜๊ฒŒ ๋˜์–ด์„œ JWT ๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ๋‚˜์ค‘์— Security๋„ ๊ฐ™์ด ๊ตฌํ˜„ํ•˜์—ฌ ์˜ฌ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Œ! ์ด๋ฒˆ์—๋Š” git์— ์˜ฌ๋ ค ์ฝ”๋“œ๊นŒ์ง€ ๊ณต์œ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค! ์ฒ˜์Œ๋ณด๋ฉด ์•ฝ๊ฐ„ ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๊ณ  ๋‚˜๋˜ํ•œ ๊ทธ๋žฌ๋‹ค ใ… ใ… ,, (๋ถ€๋„๋Ÿฌ์šด) ๊ตฌํ˜„์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๊ณ  ํ˜น์‹œ ์ด์ƒํ•œ๊ณณ์€ PRํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค...(๊ฐ„์ ˆ,,) git ์ฃผ์†Œ (์‹ค๋ฌด์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ~!) git clone https://github.com/ae..
๊ตฌ์กฐ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด resources์™€ ๊ฐ™์€ ๊ฒฝ๋กœ์— webapp์„ ๋งŒ๋“ค์–ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•ˆ์— WEB-INF๋Š” ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ  application.yml์— ์„ค์ •์— ๋”ฐ๋ผ ์•ˆ์— ์žˆ๋Š” ํด๋” ์ด๋ฆ„์€ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. application.yml spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp build.gradle // JSTL implementation 'javax.servlet:jstl:1.2' // JASPER implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' springboot์—์„œ jps๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์™ธ์žฅํ†ฐ์บฃ์„ ์˜์กด์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. jsp๋Š” ๊ทนํ˜์ด๋‹ˆ jstl๋„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํƒฌํ”Œ๋ฆฟ ..
์ธํ”„๋Ÿฐ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ - ์ตœ๋ฒ”๊ท ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ ์€ํ•„๊ธฐ ๋…ธํŠธ์ž…๋‹ˆ๋‹ค. ์ง์ ‘ ์‹ค์ „์—์„œ Java๋ฅผ ์“ฐ๊ฒŒ ๋˜๋ฉด์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ค‘์š”์„ฑ์ด ๋ผˆ๋ฅผ ๊ฐ•ํƒ€ํ–ˆ๋‹ค... ๊ณต๋ถ€ํ•˜์ž! "Software maintenance is not keep it working like before it is keep being useful in a changing world" - Jessica Kerr ์œ ์ง€๋ณด์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์œ ์šฉํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ถ„์„๊ณผ ์ˆ˜์ •์ด ๋น ๋ฅด๊ฒŒ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋น„์šฉ๊ณผ ๋ณ€ํ™” ๋‚ฎ์€ ๋น„์šฉ์œผ๋กœ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 1. ํŒจ๋Ÿฌ๋‹ค์ž„ ๊ฐ์ฒด ์ง€ํ–ฅ, ํ•จ์ˆ˜ํ˜•, ๋ฆฌ์•กํ‹ฐ๋ธŒ ๋“ฑ 2. ์ฝ”๋“œ, ์„ค๊ณ„, ์•„ํ‚คํ…์ฒ˜ DRY, TDD, SOLID, DDD, ... ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜, MSA, ... 3. ..
์ด๋ฒˆ์— ์Šคํƒ€ํŠธ์—…์— ์ทจ์—…ํ•˜๋ฉด์„œ ๋งŽ์€ ๊ฑธ ๋ฐฐ์šฐ๋Š” ๋™์‹œ์— ๋งŽ์€ ๊ฒŒ ์‹ซ์–ด์กŒ๋‹ค. ํ•˜์ง€๋งŒ ๋ฒ„ํ‹ฐ๊ณ  ๋‚˜๋ฉด ์ถ”์–ต์ด๊ณ  ๋‚˜์˜ ๊ฒฝ๋ ฅ์ด ๋˜๊ฒ ์ง€ ... ใ…  ๊ฟป ์šฐ์„  ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋“ค์–ด๊ฐ€์„œ ์ฒ˜์Œ์œผ๋กœ ์‚ฌ์šฉํ•ด ๋ดค๋‹ค. ํ•™์›์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ฐฐ์› ์ง€๋งŒ ์ด๋ฒˆ์— ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ€๋…์„ฑ๋ฉด์—์„œ ๋งค์šฐ ์ข‹๋‹ค๊ณ  ๋Š๊ผˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์„ ์œ„ํ•ด ์ •๋ฆฌํ•œ๋‹ค! Spring Boot ์—์„œ api ์„ค๊ณ„ ์ค‘ ๋ฐฐ์†ก ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋ฉด์„œ ๋ฐฐ์†ก์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š”๋ฐ 1,2,3... ๋“ฑ ์ˆซ์ž๋กœ ํ‘œํ˜„๋˜์–ด 1์ด ๋ฌด์—‡์ธ์ง€ 2๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ผ์ผ์ด ์ฐพ์•„๋ณด๊ธฐ ๋ฒˆ๊ฑฐ๋กœ์› ๋‹ค. ๋˜ํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋•Œ ์–ด๋–ค ๊ฑด์ง€ ํ—ท๊ฐˆ๋ฆด ๊ฑฐ ๊ฐ™์•„ Enumํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. @Getter public enum SomethingStatus { PAYMENT_COMPLETE(0), PREPARING(1), CANCEL(..
์• ์ •์“ฐ
'๐ŸŒ WEB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)