๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Back-end ๋ฐ๋ธŒ์ฝ”์Šค/week 08 TIL (Jpa)5

[TIL] 221209 - JPA : REST-API, API ๋ฌธ์„œํ™” SpringBoot Part4 (5) ํ•™์Šต๋ชฉํ‘œ ์—”ํ‹ฐํ‹ฐ (์ฃผ๋ฌธ๊ด€๋ฆฌ vs ๊ฒŒ์‹œํŒ) API ๊ฐœ๋ฐœ (JUnit, Lombok, OSIV) API ๋ฌธ์„œํ™” (๋ ˆ์ŠคํŠธ ๋‹ฅ์Šค, ์Šค์›จ๊ฑฐ) org.springframework.restdocs spring-restdocs-mockmvc test ์ฃผ๋ฌธ๊ด€๋ฆฌ API ๊ฐœ๋ฐœ ์ฃผ๋ฌธ์ƒ์„ฑ(POST) ์ฃผ๋ฌธ์กฐํšŒ(GET) ๋ฆฌ์ŠคํŠธ(PAGING) ๋‹จ๊ฑด (ONE) Service layer converter entity๋ฅผ Transaction ๋ฌถ์Œ ๋ฐ–์— ๊นŒ์ง€ ๋Œ๊ณ  ๋‚˜๊ฐ€๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค. entity๋Š” RDB์™€ ์–ด๋Š ์ •๋„ ํ†ต์‹ ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— entity๊ฐ€ ๋ฌถ์Œ ๋ฐ–์œผ๋กœ ๋น ์ ธ๋‚˜๊ฐ€๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ณณ์—์„œ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. (OSIV) → dto ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ†ต์‹ ํ•œ๋‹ค. Orde.. 2022. 12. 20.
[TIL] 221208 - JPA : SpringDataJPA SpringBoot Part4 (4) SpringDataJPA ์Šคํ”„๋ง์—์„œ JPA๋ฅผ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›ํ•ด์ฃผ๋Š” ํ”„๋กœ์ ํŠธ ์ฟผ๋ฆฌ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์ด ์•„๋‹Œ ๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. Auto Configuration์œผ๋กœ ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฐ ํŠธ๋žœ์žญ์…˜ ๋งค๋‹ˆ์ € ์„ค์ •์„ ์ž๋™์œผ๋กœ ํ•ด์ค€๋‹ค. spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:~/order;DB_CLOSE_ON_EXIT=FALSE username: sa password: jpa: open-in-view: false hibernate: ddl-auto: create-drop show-sql: true properties: hibernate.format_sql: true JpaRepositor.. 2022. 12. 14.
[TIL] 221207 - JPA : ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘, ๊ณ ๊ธ‰ ๋งคํ•‘, ํ”„๋ก์‹œ SpringBoot Part4(3) ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ๊ฐ์ฒด ์—ฐ๊ด€๊ด€๊ณ„ VS ํ…Œ์ด๋ธ” ์—ฐ๊ด€๊ด€๊ณ„ ํ…Œ์ด๋ธ”์€ ์™ธ๋ž˜ํ‚ค๋กœ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š”๋‹ค. ๊ฐ์ฒด๋Š” ์ฐธ์กฐ(์ฃผ์†Œ)๋กœ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋งบ๋Š”๋‹ค. ํ•ต์‹ฌ ํ‚ค์›Œ๋“œ ๋ฐฉํ–ฅ์„ฑ (๋‹จ๋ฐฉํ–ฅ, ์–‘๋ฐฉํ–ฅ) ํ…Œ์ด๋ธ”์—์„œ ๊ด€๊ณ„๋Š” ํ–ฅ์ƒ ์–‘๋ฐฉํ–ฅ์ด๋‹ค. ์™ธ๋ž˜ํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์กฐ์ธ์ด ๊ฐ€๋Šฅ SELECT * FROM orders AS o JOIN member AS m ON o.member._id = m.id ๊ฐ์ฒด์—์„œ์˜ ๋‹จ,์–‘๋ฐฉํ–ฅ ๊ด€๊ณ„ // ํšŒ์› -> ์ฃผ๋ฌธ ๋‹จ๋ฐฉํ–ฅ ๋งคํ•‘ ๊ฒฝ์šฐ. ํšŒ์›์—์„œ ์ฃผ๋ฌธ๋งŒ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. class Member { private long id; private List orders; // ํšŒ์› -> ์ฃผ๋ฌธ } class Order { private String id; } Member member .. 2022. 12. 14.
[TIL] 221206 - JPA : ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ JPA (2) - ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ EntityManagerFactory, EntityManager ํ•™์Šต ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์—”ํ‹ฐํ‹ฐ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ํŠน์ง•๊ณผ ์‹ค์Šต EntityManagerFactory, EntityManager Entity RDB์˜ table๊ณผ ๋งคํ•‘๋˜๋Š” ๊ฐ์ฒด EntityManagerFactory Entity๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Entity Manager๋ฅผ ์ƒ์‚ฐํ•˜๋Š” ๊ณต์žฅ. : ๋น„์šฉ์ด ๋น„์‹ธ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์ง€๊ณ  Entity Manager๋ฅผ ์ƒ์‚ฐํ•˜๋Š” factory์„ฑ bean : Thread safeํ•˜๋‹ค. ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ ‘๊ทผํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค. EntityManager Entity๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒ (CURD) ๋“ฑ entity์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. : Thread Safeํ•˜์ง€ ์•Š๋‹ค... 2022. 12. 7.
[TIL] 221205 - JPA : JPA ์†Œ๊ฐœ SpringBoot Part4 (1) Spring Frameworks์„ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด(RDB) ์ ‘๊ทผ ๋ฐฉ๋ฒ• H2Database : In-memory ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ( ์„œ๋ฒ„๊ฐ€ ๋‚ด๋ ค๊ฐ€๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ „๋ถ€ ๋‚ ๋ผ๊ฐ ) : ๋ณดํ†ต ์ƒ˜ํ”Œ์ฝ”๋“œ๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ• ๋•Œ ์‚ฌ์šฉ. JDBC ์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ JDBC API๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ณ„์ธต๊ณผ ํ†ต์‹ ํ•œ๋‹ค. @Slf4j public class JDBCTest { // H2DB์˜ url๊ณผ default userName, pass static final String JDBC_DRIVER = "org.h2.Driver"; static final String DB_URL = "jdbc:h2:~/test"; static final String USER = "sa"; static final.. 2022. 12. 7.