์ธํ๋ฐ/์ค์ ! ์คํ๋ง ๋ฐ์ดํฐ JPA(7)
-
[์คํ๋ง ๋ฐ์ดํฐ JPA] 7. ๋๋จธ์ง ๊ธฐ๋ฅ๋ค
์ค๋ ๊ฐ์๋ค์ ๋ด์ฉ์ ์ค๋ฌด์์๋ ์~~~์ฒญ ์์ฃผ ์ฌ์ฉํ์ง๋ ์์ง๋ง ๊ทธ๋๋ ์๋ ๊ธฐ๋ฅ๋ค์ด๊ณ , ์ ์ฌ์ฉํ๋ฉด ๋๋ฆ ์ ์ฉํ๊ฒ ์ธ ์ ๋ ์๋ค๊ณ ํด์ ์๊ฐํ๋ ์น์ ์ด๋ผ๊ณ ํ๋ค. 1๏ธโฃ Specifications (๋ช ์ธ) : ์ฑ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ (Domain Driven Design)๋ SPECIFICATION(๋ช ์ธ) ๋ผ๋ ๊ฐ๋ ์ ์๊ฐํ๋๋ฐ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ JPA Criteria๋ฅผ ํ์ฉํด์ ์ด ๊ฐ๋ ์ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ค. (์ผ๋จ JPA Criteria๋ฅผ ํ์ฉํด์ ์ง์ํ๋ค๋ ๊ฒ ์์ฒด๋ถํฐ๊ฐ ์ค๋ฌด์์ ์ฌ์ฉํ๊ธฐ์ ํ๋ค๋ค๋ ์๊ธฐ๋ค.. ) ์ ์ด Predicate - ์ฐธ ๋๋ ๊ฑฐ์ง์ผ๋ก ํ๊ฐ - AND OR ๊ฐ์ ์ฐ์ฐ์๋ก ์กฐํฉํด์ ๋ค์ํ ๊ฒ์์กฐ๊ฑด์ ์ฝ๊ฒ ์์ฑ(์ปดํฌ์งํธ ํจํด) - ์) ๊ฒ์ ์กฐ๊ฑด ํ๋ํ๋ - ์คํ..
2022.10.04 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 6. ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ถ์
1๏ธโฃ ์คํ๋ง ๋ฐ์ดํฐ JPA ๊ตฌํ์ฒด ๋ถ์ org.springframework.data.jpa.repository.support.SimpleJpaRepository -> ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ๊ณตํต ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด SimpleJpaRepository @Repository : ์ด ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋์ด ์ปดํฌ๋ํธ ์ค์บ์ ๋์์ด ๋๊ณ , JPA ์์ธ๋ฅผ ์คํ๋ง์ด ์ถ์ํํ ์์ธ๋ก ๋ณํํด์ฃผ๋ ์ญํ ๋ ํ๋ค. -> ์คํ๋ง์ด ๊ฐ์กฐํ๋ ํฐ ์ฅ์ ์ค ํ๋๋ผ๊ณ ํ ์ ์๋๋ฐ JPA ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ ์ด๋ค ์ด์ ๋ก JDBC ๋ฑ์ผ๋ก ๋ณ๊ฒฝํ๋ค๊ณ ํด๋ ์์ธ ๊ฐ์๊ฑธ ์คํ๋ง ๊ด๋ จ ์์ธ๋ก ์์์ ๋ณํํด์ฃผ๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ฒด๊ฐ ๋ฐ๋์ด๋ ๋ก์ง์ ๋์ผํ๊ฒ ๋์๊ฐ๋๋ก ์ค๊ณ๋์ด์๋ค. @Transactional : ํธ๋์ญ์ ์ ..
2022.10.03 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 5. ํ์ฅ ๊ธฐ๋ฅ
1๏ธโฃ ์ฌ์ฉ์ ์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ๊ตฌํ ์คํ๋ง ๋ฐ์ดํฐ JPA ๋ฆฌํฌ์งํ ๋ฆฌ๋ ์ธํฐํ์ด์ค๋ง ์ ์ํ๊ณ ๊ตฌํ์ฒด๋ ์คํ๋ง์ด ์๋ ์์ฑํ๋ค. ๋ฐ๋ผ์ ์ด์ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ๊ตฌํํ๋ ค๊ณ ํ๋ฉด ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ๋ค์ด ๋๋ฌด ๋ง์ ๋ค ๊ตฌํํ๊ธฐ๊ฐ ํ๋ค๋ค. ๋ค์ํ ์ด์ ๋ก ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ์ง์ ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด..?? - JPA ์ง์ ์ฌ์ฉ(EntityManager) - ์คํ๋ง JDBC Template ์ฌ์ฉ - MyBatis ์ฌ์ฉ - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ง์ ์ฌ์ฉ ๋ฑ๋ฑ.. - Querydsl ์ฌ์ฉ ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค MemberRepositoryCustom ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ ํด๋์ค MemberRepositoryImpl ์ฌ์ฉ์ ์ ์ ์ธํฐํ์ด์ค ์์ MemberRepository ๊ทธ๋ฆฌ๊ณ ์ด..
2022.09.29 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 4. ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ธฐ๋ฅ
0๏ธโฃ ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ธฐ๋ฅ - ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์ฟผ๋ฆฌ ์์ฑ - NamedQuery - @Query : ๋ฆฌํ์งํ ๋ฆฌ ๋ฉ์๋์ ์ฟผ๋ฆฌ ์ ์ - ํ๋ผ๋ฏธํฐ ๋ฐ์ธ๋ฉ - ๋ฐํ ํ์ - ํ์ด์ง๊ณผ ์ ๋ ฌ - ๋ฒํฌ์ฑ ์์ ์ฟผ๋ฆฌ - @EntityGraph -> ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ์ถ๊ฐ๋ก ๋ ํธํ๊ฒ ์ฌ์ฉํ๋๋ก ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ๋ค!! - ์ฟผ๋ฆฌ ๋ฉ์๋ ๊ธฐ๋ฅ 3๊ฐ์ง - ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์ฟผ๋ฆฌ ์์ฑ - ๋ฉ์๋ ์ด๋ฆ์ผ๋ก JPA NamedQuery ํธ์ถ - @Query ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค์ ์ฟผ๋ฆฌ ์ง์ ์ ์ 1๏ธโฃ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก ์ฟผ๋ฆฌ ์์ฑ : ๋ฉ์๋ ์ด๋ฆ์ ๋ถ์ํด์ JPQL ์ฟผ๋ฆฌ ์คํ - ์์ JPA ๋ฆฌํฌ์งํ ๋ฆฌ MemberJpaRepository -> Member๊ฐ์ฒด์์ ์ด๋ฆ์ด ๊ฐ๊ณ , ๋์ด๊ฐ ์ฃผ์ด์ง ๋์ด๋ณด๋ค ๋ง์ ํ์ ..
2022.09.28 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 3. ๊ณตํต ์ธํฐํ์ด์ค ๊ธฐ๋ฅ
1๏ธโฃ ์์ JPA ๊ธฐ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ง๋ค๊ธฐ ๊ธฐ๋ณธ CRUD - ์ ์ฅ - ๋ณ๊ฒฝ -> ๋ณ๊ฒฝ ๊ฐ์ง Dirty Checking - ์ญ์ - ์ ์ฒด ์กฐํ - ๋จ๊ฑด ์กฐํ - ์นด์ดํธ โ ์ฐธ๊ณ JPA์์ ์์ ์ ํน๋ณํ ๋ช ๋ น์์ด ๋ณ๊ฒฝ๊ฐ์ง ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ํธ๋์ญ์ ์์์ ์ํฐํฐ๋ฅผ ์กฐํํ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด, ํธ๋์ญ์ ์ข ๋ฃ ์์ ์ ๋ณ๊ฒฝ๊ฐ์ง ๊ธฐ๋ฅ์ด ์๋ํด์ ๋ณ๊ฒฝ๋ ์ํฐํฐ๋ฅผ ๊ฐ์งํ๊ณ UPDATE SQL์ ์คํํ๋ค. - ์์ JPA ๊ธฐ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ : ํ์ [Optional] Java8์์๋ Optional ํด๋์ค๋ฅผ ์ ๊ณตํด NPE ๋ฐ์ํ๋๊ฑธ ๋ฐฉ์งํ ์ ์๋๋ก ๋์์ค๋ค. Optional๋ null์ด ์ฌ ์ ์๋ ๊ฐ์ ๊ฐ์ธ๋ Wrapper ํด๋์ค๋ก, ์ฐธ์กฐํ๋๋ผ๋ NPE๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๋์์ค๋ค. Optional์ ๊ฐ์ด n..
2022.09.22 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 2. ์์ ๋๋ฉ์ธ ๋ชจ๋ธ
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! ์คํ๋ง ๋ฐ์ดํฐ JPA - ์ธํ๋ฐ | ๊ฐ์ ์คํ๋ง ๋ฐ์ดํฐ JPA๋ ๊ธฐ์กด์ ํ๊ณ๋ฅผ ๋์ด ๋ง์น ๋ง๋ฒ์ฒ๋ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ตฌํ ํด๋์ค ์์ด ์ธํฐํ์ด์ค๋ง์ผ๋ก ๊ฐ๋ฐ์ ์๋ฃํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต ๊ฐ๋ฐํด์จ ๊ธฐ๋ณธ CRUD ๊ธฐ๋ฅ๋ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค. www.inflearn.com ์ธํ๋ฐ- ์ค์ ! ์คํ๋ง ๋ฐ์ดํฐ JPA ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. 1๏ธโฃ ์์ ๋๋ฉ์ธ ๋ชจ๋ธ ๊ฐ๋จํ Member, Team๋ง ๋ง๋ค์ด์ ์งํํ๋ค. Member๋ ํ๋์ Team์ ๊ฐ์ง ์ ์๊ณ , Team์ ์ฌ๋ฌ๋ช ์ Membe..
2022.09.22 -
[์คํ๋ง ๋ฐ์ดํฐ JPA] 1. ํ๋ก์ ํธ ํ๊ฒฝ์ค์
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84/dashboard ์ค์ ! ์คํ๋ง ๋ฐ์ดํฐ JPA - ์ธํ๋ฐ | ๊ฐ์ ์คํ๋ง ๋ฐ์ดํฐ JPA๋ ๊ธฐ์กด์ ํ๊ณ๋ฅผ ๋์ด ๋ง์น ๋ง๋ฒ์ฒ๋ผ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๊ตฌํ ํด๋์ค ์์ด ์ธํฐํ์ด์ค๋ง์ผ๋ก ๊ฐ๋ฐ์ ์๋ฃํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ณต ๊ฐ๋ฐํด์จ ๊ธฐ๋ณธ CRUD ๊ธฐ๋ฅ๋ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค. www.inflearn.com ์ค์ ! ์คํ๋ง ๋ฐ์ดํฐ JPA ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. 0๏ธโฃ ํ๋ก์ ํธ ํ๊ฒฝ์ค์ https://start.spring.io/ ์ฌ์ฉ ๊ธฐ๋ฅ: Spring web, Jpa, h2, lombok implementation 'o..
2022.09.21