<์ค๋์ ๋ณต์ต>
- spring
๐ง ์คํ๋ง ๋ฐ์ดํฐ JPA
- ์ธํฐํ์ด์ค๋ง์ผ๋ก๋ ๊ฐ๋ฐ์ ์๋ฃ์ํฌ ์ ์๋ค
- ๋ฐ๋ณต ๊ฐ๋ฐํด์จ ๊ธฐ๋ณธ DRUC๊ธฐ๋ฅ๋ ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ ๋ชจ๋ ์ ๊ณตํ๋ค
- ์คํ๋ง ๋ถํธ์ JPA๋ผ๋ ๊ธฐ๋ฐ ์์, ์คํ๋ง ๋ฐ์ดํฐ JPA๋ผ๋ ํ๋ ์์ํฌ๋ฅผ ๋ํ๋ฉด ๊ฐ๋ฐ์ด ๋ ์์ํด ์ง๋ค(์กฐ๊ธ์ด๋ผ๋ ๋จ์ํ๊ณ ๋ฐ๋ณต์ด๋ผ ์๊ฐํ๋ ๊ฐ๋ฐ ์ฝ๋๋ค์ด ํ์ฐํ๊ฒ ์ค์ด๋ ๋ค → ๊ฐ๋ฐ์๋ ํต์ฌ ๋น์ง๋์ค ๋ก์ง์ ๊ฐ๋ฐํ๋๋ฐ, ์ง์คํ ์ ์์)
- ์ค๋ฌด์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์คํ๋ง ๋ฐ์ดํฐ JPA๋ ์ด์ ์ ํ์ด ์๋๋ผ ํ์!
โ์คํ๋ง ๋ฐ์ดํฐ JPA๋ JPA๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก ๋์์ฃผ๋ ๊ธฐ์ ! - ๋ฐ๋ผ์ JPA๋ฅผ ๋จผ์ ํ์ตํ ํ์ ์คํ๋ง ๋ฐ์ดํฐ JPA๋ฅผ ํ์ตํด์ผ ํ๋ค
- SpringDataJpaMemberRepository (interface)
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>,
MemberRepository {
@Override
Optional<Member> findByName(String name);
}
- jpaRepository๋ฅผ ๋ฐ์์ํ
- ์ธํฐํ์ด์ค → ์ธํฐํ์ด์ค = "extends"/ ์ธํฐํ์ด์ค๋ ๋ค์ค์์ ๊ฐ
- JpaRepository<T, ID> โก๏ธ T = Member, ID = entity์์ ์๋ณ์ pk(type)
- ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ JpaRepository๋ฅผ ๋ฐ๊ณ ์์ผ๋ฉด ๊ตฌํ์ฒด๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด ์ค๋ค → ์คํ๋ง ๋น์ ์๋์ผ๋ก ๋ฑ๋กํ๋ค

โ๊ฐ์๋ฅผ ๋ณด๋ฉด์ ๋ฐ๋ผ ์น๊ณ ์์๋๋ฐ ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ํ๋ฌ๋ค๐น ์ด๋ฐ ์ค๋ฅ๋ฉ์ธ์ง๊ฐ ๋ณ๋๋ฐ ํด์ํด๋ณด๋ ์ค๋ฅ๋ฉ์ธ์ง
โก๏ธ ์๋ ์ฐ๊ฒฐ์ ํ ์ ์์, 'MemberRepository' ์ ํ์ Bean์ด ๋ ๊ฐ ์ด์ ์๋ค, jdbcTemplateMemberRepository(JdbcTemplateMemberRepository.java) ← ์ด๋ถ๋ถ์ด ํํธ๋ก ๋์์์๊ณ ์ง๋ฌธ๋ฐฉ์ ์ฐพ์๋ณด๋ฉด์ ๋์๋ค๋ ๊ฒฐ๊ณผ!
๐น jdbcTemplateMemberRepository์ ์๋ @Repository ์ด๋ ธํ ์ด์ ์ ์ฃผ์์ฒ๋ฆฌ ํ๋๋ ์ ์คํ๋์์!
- ๋์ผํ ํ์ (MemberRepository)์ ๋น์ 2๊ฐ ๋ฑ๋กํด์ ๋ฐํํ๋ ๋ฌธ์ !
- @Repository๋ก ์๋ ๋น ๋ฑ๋ก(์ปดํฌ๋ํธ ์ค์บ์ ๋์)์ ์ญ์ ํ์ฌ ํด๊ฒฐ!

- test๊ฐ ์ฑ๊ณตํ๋ ๊ฑธ ๋ณผ ์ ์๋ค
- ์คํ๋ง ๋ฐ์ดํฐ JPA๊ฐ "SpringDataJpaMemberRepository"๋ฅผ ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋ก์ํจ๋ค (ํ๋ก์๋ผ๋ ๊ธฐ์ ์ ์ฌ์ฉํด์ - ๊ฐ์ฒด๋ฅผ ์์ฑํด ์คํ๋ง ๋น์ ์ฌ๋ฆผ → ์ธ์ ์ ํด์ ์ด๋ค)

- ์คํ๋ง ๋ฐ์ดํฐ๊ฐ JpaRepository
- JpaRepository : ๊ธฐ๋ณธ๋ฉ์๋๋ค์ด ๋ค ์ ๊ณต๋๋ค(ex. findAll(), findAllById() ๋ฑ๋ฑ)
- ์ ๊ทธ๋ฆผ์ด ์๋ ์์ ์ฌ์ ์ฐจ์ด๊ฐ ๋๋๊ฒ ๋ช ๊ฐ ์์
- ๋ชจ๋์๊ฒ ํต์ฉ๋๋ ๊ฒ!
- ๊ทธ๋ฌ๋ ๋ชจ๋ ๋น์ฆ๋์ค๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ณตํตํ ๋ชปํ๋ ๊ฒ๋ค์ด ์์ - ๊ณตํต ํด๋์ค๋ก ์ฐพ์ ์ ์์ โก๏ธ๊ทธ๋์ ์ด๋ฐ ๋ถ๋ถ๋ค์ ๊ท์น์ ์ํด ๋ง๋ค์ด ์ธ ์ ์์(ex. findByName())
โญ ์คํ๋ง ๋ฐ์ดํฐ JPA ์ ๊ณต ๊ธฐ๋ฅ
๐น ์ธํฐํ์ด์ค๋ฅผ ํตํ ๊ธฐ๋ณธ์ ์ธ CRUD
๐น "findByName()", "findByEmail()" ์ฒ๋ผ ๋ฉ์๋ ์ด๋ฆ ๋ง์ผ๋ก ์กฐํ ๊ธฐ๋ฅ ์ ๊ณต
๐น ํ์ด์ง ๊ธฐ๋ฅ ์๋ ์ ๊ณต
[ ์ค๋ฌด์์๋ JPA์ ์คํ๋ง ๋ฐ์ดํฐ JPA๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๊ณ , ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ๋ Querydsl์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค, Querydsl์ ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ๋ ์๋ฐ ์ฝ๋๋ก ์์ ํ๊ฒ ์์ฑํ ์ ์๊ณ , ๋์ ์ฟผ๋ฆฌ๋ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๋ค, ์ด ์กฐํฉ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ์ฟผ๋ฆฌ๋ JPA๊ฐ ์ ๊ณตํ๋ ๋ค์ดํฐ๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์์ ํ์ตํ ์คํ๋ง JdbcTemplate๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค ] - JPA, ์คํ๋ง ๋ฐ์ดํฐ JPA, Querydsl์ ์กฐํฉํด์ ์ฌ์ฉํจ
- ์ ์กฐํฉ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ → ์์ํ SQL(๋ค์ดํฐ๋ธ - ์ฉ์ผ๋ก SQL์ง๋ )์ธ ์ ์๋๋ก ์ ๊ณตํจ
- JpaRepository


- Paging ์กฐํ๊น์ง ํด์ค๋ค

- save(), findById() ๋ฑ ๋ชจ๋ ์์
- ๊ธฐ๋ณธ์ ์ธ CRUD๋ ๋จ์์กฐํ๋ค์ด ๋ชจ๋ ์ ๊ณต๋จ
<์ถ์ฒ - ์ธํ๋ฐ(์คํ๋ง ์ ๋ฌธ - ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์ ) >
(https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8)
[๋ฌด๋ฃ] ์คํ๋ง ์ ๋ฌธ - ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ ๋ฐ์ ๋น ๋ฅด๊ฒ ํ์ตํ ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ
www.inflearn.com
- ์คํ๋ง ์ ๋ฌธ - ์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ, ์น MVC, DB ์ ๊ทผ ๊ธฐ์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ํ์ต์ ์ํด ์์ฑํ์ต๋๋ค.
