[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 1. JPA ๊ตฌ๋™ ๋ฐฉ์‹
ยท
Spring/Spring JPA ๊ธฐ๋ณธ
JPA ๊ตฌ๋™ ๋ฐฉ์‹ EntityManagerFactory ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์Šค๋ ˆ๋“œ ๊ฐ„์— ์ ˆ๋Œ€ ๊ณต์œ ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋™์‹œ์„ฑ(Concurrency): ์œ ์ €๊ฐ€ ์ฒด๊ฐํ•˜๊ธฐ์—๋Š” ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฑฐ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‚ฌ์‹ค์€ ์œ ์ €๊ฐ€ ์ฒด๊ฐํ•  ์ˆ˜ ์—†๋Š” ์งง์€ ์‹œ๊ฐ„๋‹จ์œ„๋กœ ์ž‘์—…๋“ค์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‚ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ˆ˜์ •ํ•ด๋ฒ„๋ฆฌ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ํ•˜๋‚˜๋ฅผ ๊ณต์œ ํ•˜๋ฉด ์•ˆ ๋˜๊ณ , ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ณ„์† ๋งŒ๋“ค์–ด์ค˜์•ผํ•œ๋‹ค. ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ํŒฉํ† ๋ฆฌ์ด๋‹ค. EntityManager Entity๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค. ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ € ๋‚ด๋ถ€์— ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ(Persistence Context)..
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜ํ•˜๊ธฐ
ยท
Develop/DB
H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ๋ฐœ์ด๋‚˜ ํ…Œ์ŠคํŠธ ์šฉ๋„๋กœ ๊ฐ€๋ณ๊ณ  ํŽธ๋ฆฌํ•œ DB, ์›น ํ™”๋ฉด ์ œ๊ณต ๋‹ค์šด๋กœ๋“œ https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp www.h2database.com ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ ์ƒ์„ฑ ๋ฐฉ๋ฒ• http..
[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 0. SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ ๋ฌธ์ œ์  / ORM ์ด๋ž€ ?
ยท
Spring/Spring JPA ๊ธฐ๋ณธ
SQL ์ค‘์‹ฌ์ ์ธ ๊ฐœ๋ฐœ ๋ฌธ์ œ์  ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์—์„œ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ๊ฐ์ฒด(์ •ํ™•ํžˆ๋Š” ๊ฐ์ฒด์˜ ์ฐธ์กฐ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜)๋ฅผ ํ†ตํ•ด ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋ฐ˜ํ•ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒจ๋Ÿฌ๋‹ค์ž„์€ ํ…Œ์ด๋ธ”์ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•  ๋•Œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ FK๋กœ ๊ฐ€์ง์„ ํ†ตํ•ด ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ORM Object-relational mapping(๊ฐ์ฒด ๊ด€๊ณ„ ๋งคํ•‘) ๊ฐ์ฒด๋Š” ๊ฐ์ฒด๋Œ€๋กœ ์„ค๊ณ„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Œ€๋กœ ์„ค๊ณ„ ORM ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ค‘๊ฐ„์—์„œ ๋งคํ•‘ https://www.inflearn.com/course/ORM-JPA-Basic/dashboard ์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜ JPA๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ฑฐ๋‚˜, ์‹ค๋ฌด์—์„œ JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด JP..
[์‹ค์ „! ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ JPA ํ™œ์šฉ1] - 5. ์›น ๊ณ„์ธต ๊ฐœ๋ฐœ
ยท
Spring/Spring JPA ํ™œ์šฉ
public class MemberForm { @NotEmpty(message = "ํšŒ์› ์ด๋ฆ„์€ ํ•„์ˆ˜ ์ž…๋‹ˆ๋‹ค") private String name; private String city; private String street; private String zipcode; } ํผ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ™”๋ฉด ๊ณ„์ธต๊ณผ ์„œ๋น„์Šค ๊ณ„์ธต์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•œ๋‹ค. @NotEmpty Null, ๋นˆ ๋ฌธ์ž์—ด ๋ถˆ๊ฐ€ @PostMapping("/members/new") public String create(@Valid MemberForm form , BindingResult result) { if (result.hasErrors()){ return "members/createMemberForm"; } @Valid ํŠน์ง• ์œ ํšจ์„ฑ๊ฒ€์‚ฌ , ์ž˜๋ชป๋œ..
๊นŠ์ด/๋„“์ด ์šฐ์„  ํƒ์ƒ‰(DFS, BFS ) ํ™œ์šฉ - 8. ์‚ฌ๊ณผ๋‚˜๋ฌด
ยท
Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
๊นŠ์ด/๋„“์ด ์šฐ์„  ํƒ์ƒ‰(DFS, BFS ) ํ™œ์šฉ - 7. ์†ก์•„์ง€ ์ฐพ๊ธฐ
ยท
Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
[์‹ค์ „! ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ JPA ํ™œ์šฉ1] - 4. ์ฃผ๋ฌธ ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ
ยท
Spring/Spring JPA ํ™œ์šฉ
์ฃผ๋ฌธ ๋„๋ฉ”์ธ ๊ฐœ๋ฐœ //== ์ƒ์„ฑ ๋ฉ”์„œ๋“œ ==// public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) ๊ฐ€๋ณ€์ธ์ž ํƒ€์ž…... ๋ณ€์ˆ˜๋ช…๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์„ ์–ธ for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์ง€์ •
๊นŠ์ด/๋„“์ด ์šฐ์„  ํƒ์ƒ‰(DFS, BFS ) ํ™œ์šฉ - 6. ์•ŒํŒŒ์ฝ”๋“œ
ยท
Algorithm/ํŒŒ์ด์ฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ