Backend๐ŸŒฑ

์ด์ „ ํฌ์ŠคํŠธ์—์„œ ์„ค๋ช…ํ•œ ํฌ์žฅํ˜•(wrapper class)์˜ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์„ ๊ธฐ๋ณธํ˜• ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. โ€ป ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด์„œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ํผ ์•ˆ์—์„œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ๋ฐฑ์—”๋“œ๋กœ ๋„˜๊ฒจ์ค„ ๋•Œ ๋ฌธ์ž์—ด์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ์ž…๋ ฅ์„ ๋ฐ›์•˜์„ ๊ฒƒ์ด๋ฏ€๋กœ ์ด ๋ฌธ์ž์—ด ์ž๋ฃŒํ˜•์„ ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค โœ”๏ธ[ํ‘œ 1] ํฌ์žฅํ˜•์˜ ๊ธฐ๋ณธํ˜• ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด ๋ฉ”์˜๋“œ ๋ฉ”์†Œ๋“œ๋ช… ๊ธฐ๋Šฅ byteValue() byte๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. shortValue() short๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. intValue() int๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. longValue() long๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. floatValue() float๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. doubleValue() double๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด Integer ํ˜• ๊ฐ์ฒด์—..
โšก๏ธArrayList ๐Ÿ“ŒArrayList ์„ ์–ธ ๐Ÿ“ŒArrayList ์ถ”๊ฐ€ ๐Ÿ“ŒArrayList ์‚ญ์ œ ๐Ÿ“ŒArrayList ๊ฐ’ ๊ฒ€์ƒ‰ ๐Ÿ“ŒArrayList ๊ฐ’ ์ถ”์ถœ, ์ถœ๋ ฅ โšก๏ธArrayList์™€ ํด๋ž˜์Šค ๊ฐ์ฒด ๐Ÿ“Œํด๋ž˜์Šค ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ArrayList์— ์ถ”๊ฐ€ ๐Ÿ“ŒArrayList ์—์„œ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๊ฐ’ ์ถ”์ถœํ•˜๊ธฐ Q) ๐Ÿค”ArrayList๊ฐ€ ๋„๋Œ€์ฒด ๋ญ”๊ฐ€์š”?! ์ €๋ฒˆ์— ๋ฐฐ์šด ๋ฐฐ์—ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๋งŒ ์“ฐ๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€์š”? ArrayList๋ฅผ ๋„๋Œ€์ฒด ์™œ ์“ฐ๋Š” ๊ฑด๊ฐ€์š”!? A) ๐Ÿ˜ŽCalm Down... ๋‚ด ์–˜๊ธฐ์ข€ ๋“ค์–ด๋ด ์นœ๊ตฌ ๋‹น์—ฐํžˆ ์“ฐ๋Š” ์ด์œ ๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ ์‚ฌ์šฉํ•˜๊ฒ ์ง€? ๋‚ด๊ฐ€ ์–˜๋ฅผ ํ•˜๋‚˜ ๋“ค์–ด์ค„๊ป˜ ์ฒ˜์Œ์— 100๋ช…์˜ ํ•™์ƒ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ–ˆ๋Š”๋ฐ ์–ด๋А ์ˆœ๊ฐ„ ํ•™์ƒ ์ˆ˜๊ฐ€ 100๋ช…์ด ๋„˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž Q) ๐Ÿค”๊ทธ๋ž˜์„œ์š”?! ๊ทธ๊ฒŒ ๋ญ ์–ด์จŒ๋‹ค๊ตฌ์š”!! A..
๋žŒ๋‹ค์‹์˜ map(), filter(), forEach(), sorted() ArrayList์˜ add()์™€ ์นœํ•ด์ ธ ๋ณด์ž ๐Ÿ“ŒTravelCustomer.java package Chapter13; public class TravelCustomer { private String name; private int age; private int price; public TravelCustomer(String name, int age, int price) { this.name = name; this.age = age; this.price = price; } public String getName() { return name; } public int getAge() { return age; } public int get..
์ถœ์ฒ˜ : joont92.github.io/jpa/Spring-Data-JPA/ ์œ„ ์‚ฌ์ดํŠธ๊ฐ€ ๋„ˆ๋ฌด ์ •๋ฆฌ๋ฅผ ์ž˜ ํ•ด ๋†“์•˜๋‹ค. ์กฐ๊ธˆ๋งŒ ํผ์˜จ๋‹ค๋Š” ๊ฒƒ์ด ํ•˜๋‚˜๋„ ๋บ„ ์ˆ˜ ์—†๋Š” ์ฃผ์˜ฅ๊ฐ™์€ ๊ธ€์ด๋ฏ€๋กœ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•˜๋‹ค. JpaRepository(๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค) JpaRepository๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ CRUD ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. public interface MemberRepository extends JpaRepository{ } ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์— ๋Œ€ํ•œ CRUD๋ฅผ ๊ณต์งœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค. ์ œ๋„ค๋ฆญ์—๋Š” ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์™€ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์‹๋ณ„์ž ํƒ€์ž…์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. JpaRepository์˜ ๊ณ„์ธต๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋ณด๋‹ค์‹œํ”ผ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ..
์•„์ง๋„!!!!!!!!!!!!!! Calender๋‚˜ Date๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํ˜น์€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์ € ๊ฐ™์€๋ถ„๋“ค์„ ์œ„ํ•ด ์ค€๋น„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. Java 8 ๋ถ€ํ„ฐ java.time(joda.time) api ์ถœ์‹œ ๋๊ธฐ ๋•Œ๋ฌธ์—, Java version 8 ์ด์ƒ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Java ์‹œ๊ฐ„ API ์‹œ๋Œ€ ํ๋ฆ„์ˆœ java.util.Date > java.util.Calendar > java.time(org.joda.time) LocalDate ๊ฐœ๋… ๋กœ์ปฌ ๋‚ ์งœ ํด๋ž˜์Šค๋กœ ๋‚ ์งœ ์ •๋ณด๋งŒ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ ๋‚ ์งœ ์ •๋ณด๋งŒ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค ๋‚ ์งœ ์ •๋ณด๋งŒ~ ๋ฌธ๋ฒ• // ๋กœ์ปฌ ์ปดํ“จํ„ฐ์˜ ํ˜„์žฌ ๋‚ ์งœ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ LocalDate ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด LocalDate currentDate = LocalDate.now(); // result : 2019-11-13 //..
db์—๋Š” ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ jpa์˜ ๊ฐ’ ํƒ€์ž… ์ปฌ๋ ‰์…˜์€ @ElementCollection๊ณผ @CollectionTable ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด ์–ด๋…ธํ…Œ์ด์…˜๋“ค์„ ํ™œ์šฉํ•œ ๊ฐ’ ํƒ€์ž… ์ปฌ๋ ‰์…˜์˜ ๊ฐœ๋…๊ณผ ํŠน์ง•, ์ˆ˜์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ 1. ๊ฐ’ ํƒ€์ž… ์ปฌ๋ ‰์…˜์˜ ๊ฐœ๋…๊ณผ ํŠน์ง• 2. ๊ฐ’ ํƒ€์ž… ์ปฌ๋ ‰์…˜์˜ ์ˆ˜์ • โœ”๏ธ๊ฐ’ ํƒ€์ž… ์ปฌ๋ ‰์…˜์˜ ๊ฐœ๋…๊ณผ ํŠน์ง• 1. ๊ฐœ๋… ๊ฐ’ ํƒ€์ž…์„ ์ปฌ๋ ‰์…˜์— ๋‹ด์•„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.DB์—์„œ๋Š” ๋”ฐ๋กœ ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ์ปฌ๋ ‰์…˜์— ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•˜์—ฌ ์ปฌ๋ ‰์…˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด @ElementCollection๊ณผ @CollectionTable ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 2. ํŠน์ง• โ‘  ๊ฐ’ ํƒ€์ž… ์ปฌ๋ ‰์…˜์€ ๊ฐ’ ํƒ€์ž…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋”ฐ..
@RequestMapping์€ DefaultAnnotationHandlerMapping์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์„ ํƒํ•  ๋•Œ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์• ๋…ธํ…Œ์ด์…˜์ด๋‹ค. url๋‹น ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ์— ๋งคํ•‘๋˜๋˜ ๋‹ค๋ฅธ ํ•ธ๋“ค๋Ÿฌ ๋งคํ•‘๊ณผ ๋‹ฌ๋ฆฌ ๋ฉ”์„œ๋“œ ๋‹จ์œ„๊นŒ์ง€ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, url ๋ฟ ์•„๋‹ˆ๋ผ ํŒŒ๋ผ๋ฏธํ„ฐ, ํ—ค๋” ๋“ฑ ๋”์šฑ ๋„“์€ ๋ฒ”์œ„๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๐ŸŒฑ์†์„ฑ DefaultAnnotationHandlerMapping์€ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ์— ๋ถ™์€ @RequestMapping ์• ๋…ธํ…Œ์ด์…˜ ์ •๋ณด๋ฅผ ๊ฒฐํ•ฉํ•ด ์ตœ์ข… ๋งคํ•‘์ •๋ณด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๊ฒฐํ•ฉ ๋ฐฉ๋ฒ•์€ ํด๋ž˜์Šค ๋ ˆ๋ฒจ์˜ @RequestMapping์„ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๊ณ , ๋ฉ”์„œ๋“œ ๋ ˆ๋ฒจ์˜ @RequestMapping์œผ๋กœ ์„ธ๋ถ„ํ™”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. @RequestMapping์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค์€..
์•„ ๋‹น์—ฐํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค 1!!!! ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‚˜์š” ?!!! ์•„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค ์ ˆ ๋ฏฟ์œผ์„ธ์š” [๋ฐฉ๋ฒ• 1. BookRepository ์ธํ„ฐํŽ˜์ด์Šค ๋Œ€์‹  ๊ตฌํ˜„์ฒด๋ฅผ 2๊ฐœ ์ฃผ์ž…๋ฐ›๋Š”๋‹ค] ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋А๋‚Œ์ž…๋‹ˆ๋‹ค!! ์ด๋ ‡๊ฒŒ๋˜๋ฉด 1๋ฒˆ์—์„œ๋Š” A Repository, 2๋ฒˆ์—์„œ๋Š” B Repository๋ฅผ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!! ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์žˆ๋Š”๋ฐ์š”!! @RestController public class BookController { private final BookMemoryRepository bookMemoryRepository; private final BookMySqlRepository bookMysqlRepository; public BookController( BookMemoryRepository bookMe..
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” h2๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค! # ํ…Œ์ด๋ธ” ์˜ˆ์•ฝ์–ด ํŠน์ • ํ‚ค์›Œ๋“œ๋กœ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค ex) ORDER๋กœ ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ ์˜ค์ž‘๋™ ๋Œ€์‹ ์— ORDERS๋กœ ํ•˜๋ฉด ๋งŒ๋“ค์–ด์ง # ๊ธฐ๋ณธํ‚ค ์ž๋™ํ• ๋‹น @Id @GeneratedValue private Long id; ๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ํ–ˆ์„๋•Œ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ getter, setter ์ƒ์„ฑํ›„ Main๋ฉ”์„œ๋“œ์—์„œ setId(1L)์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ•์ œ ์ฃผ์ž…ํ–ˆ์„๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค ๊ธฐ๋ณธํ‚ค ์ž๋™ํ• ๋‹น์œผ๋กœ ํ–ˆ์œผ๋ฉด ๊ฐ•์ œ ์ฃผ์ž…ํ•˜์ง€ ๋ง์ž # ๊ฐ€๋”์”ฉ ์‹คํ–‰๋งŒ์œผ๋กœ ์˜ค๋ฅ˜ ๊ทธ๋Ÿด ๋•Œ๋Š” ์ „์ฒด ํ…Œ์ด๋ธ” drop ํ›„์— drop table orders; drop table product; drop table member; create๋ชจ๋“œ๋กœ ๋‹ค์‹œ ์ƒ์„ฑํ•œ๋‹ค # ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„ ์‹ค์Šต # Member @Ent..
๋ชฉ์ฐจ @JoinColumn์ด๋ž€? with @OneToOne with @ManyToOne 1. @JoinColumn์ด๋ž€? @JoinColumn์€ ์—”ํ‹ฐํ‹ฐ ์—ฐ๊ด€๊ด€๊ณ„๋‚˜ Collection ์—ฐ๊ด€๊ด€๊ณ„์—์„œ ์กฐ์ธ ๋Œ€์ƒ์ด ๋˜๋Š” Column์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 2. with @OneToOne @OneToOne๊ณผ ํ•จ๊ป˜ ์“ฐ์ด๋Š” @JoinColumn์€ ํ˜„์žฌ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” refer ์—”ํ‹ฐํ‹ฐ์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ํ•ด๋‹น ํ•„๋“œ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. DB ์ƒ์œผ๋กœ๋Š” ์™ธ๋ž˜ํ‚ค๋กœ ์žกํžˆ๋Š” ๊ฒƒ์ด๊ณ , JPA ์ƒ์œผ๋กœ๋Š” ๊ฐ์ฒด๊ฐ€ ๋งคํ•‘๋˜์–ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. @Entity public class Office { @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "addressId") private Address address; } 3..
JaeStory
'Backend๐ŸŒฑ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)