๋ฐ์ํ
Spring Data JPA
- JPA๋ฅผ ๋์์ฃผ๋ ๊ธฐ์ ์
๋๋ค.
- ๋ณดํต ๋ฐ๋ณต ๊ฐ๋ฐํ๋ CRUD ๊ธฐ๋ฅ๋ถํฐ ํ์ด์ง๊น์ง ์ ๊ณตํฉ๋๋ค.
โ JPA๋ฅผ ๊ณต๋ถํ ๋ค์ Spring Data JPA๋ฅผ ๊ณต๋ถํด์ผ ํ๋ค.
์ฌ์ฉ๋ฒ
- Repository
- src-main-java-hello-hellospring-repositoryํจํค์ง์ ์ธํฐํ์ด์ค SpringDataJpaMemberRepository๋ฅผ ๋ง๋ ๋ค.
- SpringDataJpaMemberRepository
- JpaRepository ๋ฅผ ํ์ฅextendsํ๋ค.
โ JpaRepository๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์๋์ผ๋ก ๋น์ผ๋ก ๋ง๋ค์ด ์คํ๋ง ์ปจํ ์ด๋์ ์ฌ๋ฆฐ๋ค. - ์ ๋ค๋ฆญ ํ์
์ผ๋ก <์ํฐํฐT, ๊ธฐ๋ณธํค ํ์
ID > ์ค์ .
- ์์ ์ธํฐํ์ด์ค ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ํ์ฅํ๋ค.
- JpaRepository ๋ฅผ ํ์ฅextendsํ๋ค.
- ์ด ์ธํฐํ์ด์ค์ ๊ตฌํ ํด๋์ค๊ฐ ์์ด๋ ์๋ 2.config๋ง ์ค์ ํด๋ ์ด๋ ๊ฒ ์ฝ๋ ์คํ์ด ๊ฐ๋ฅํ๋ค.
- jpa API doc์ ์๋ ๋ฉ์๋๋ค์ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ findByName() ๋ฉ์๋๋ doc์ ์๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.
- JPQL์๋ ๊ท์น์ด ์์ด์ ๋ฉ์๋๋ช
์ findBy + Name๋ผ๊ณ ์ ์ผ๋ฉด
โ select m from Member m where m.name = ?
๊ณผ ๊ฐ์ด ๋ณํํด ์คํํ๋ค.
์์ฃผ ๋ณต์กํ ์ฟผ๋ฆฌ ๋ง๊ณ ๋๋ถ๋ถ์ ์ฝ๋๋ ์ด๋ ๊ฒ ์ธํฐํ์ด์ค๋ง์ผ๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค. - findByNamdOrId ์ ๊ฐ์ด 'or' ๋ 'and'๋ฅผ ์ด์ฉํด์ ์กฐํฉ๋ ๊ฐ๋ฅํ๋ค.
- JPQL์๋ ๊ท์น์ด ์์ด์ ๋ฉ์๋๋ช
์ findBy + Name๋ผ๊ณ ์ ์ผ๋ฉด
- ์ ์ฒด์ฝ๋
๋๋ณด๊ธฐ
package hello.hellospring.repository; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import hello.hellospring.domain.Member ; @SuppressWarnings("unchecked") public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository { @Override public Member save(Member member); @Override Optional<Member> findById(Long id); @Override Optional<Member> findByName(String name); @Override List<Member> findAll(); }
- src-main-java-hello-hellospring-repositoryํจํค์ง์ ์ธํฐํ์ด์ค SpringDataJpaMemberRepository๋ฅผ ๋ง๋ ๋ค.
- config
- ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑ์ ์์กด์ฑ ์ฃผ์
DI์ผ๋ก ๋ฐ์์ ์๋น์ค์์ ์ฌ์ฉํ๋ค.
- ์ ์ฒด์ฝ๋
๋๋ณด๊ธฐ
package hello.hellospring; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import hello.hellospring.repository.MemberRepository; import hello.hellospring.service.MemberService; @Configuration public class SpringConfig { private final MemberRepository memberRepository; @Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Bean public MemberService memberService() { return new MemberService(memberRepository); } }
- ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑ์ ์์กด์ฑ ์ฃผ์
DI์ผ๋ก ๋ฐ์์ ์๋น์ค์์ ์ฌ์ฉํ๋ค.
๐ก ์ค๋ฌด์์๋ JPA์ ์คํ๋ง ๋ฐ์ดํฐ JPA๋ฅผ ์ฌ์ฉํ๊ณ , ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ๋ Querydsl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. ์ด ์กฐํฉ์ผ๋ก ์ฌ์ฉํ๊ธฐ ํ๋ ๊ฒฝ์ฐ ๋ค์ดํฐ๋ธ ์ฟผ๋ฆฌ(SQL ์ฟผ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ Jdbc Template์ ์ฌ์ฉํ๋ค.
โป ์ฐธ์กฐ : https://www.inflearn.com/roadmaps/373
๋ฐ์ํ
'๐ Spring > ๐ Spring Boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring]์์ ์๋ฐ ๊ฐ๋ฐ-ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ๊ณผ ํ ์คํธ (0) | 2025.01.17 |
---|---|
[SpringBoot]AOP ์ ๋ฌธ-์ค๋ช ๊ณผ ์ฌ์ฉ๋ฒ (0) | 2025.01.10 |
[SpringBoot][Gradle][JPA]์ ๋ฌธ. ์ค์ ๋ถํฐ ์ฌ์ฉ๊น์ง. (1) | 2025.01.10 |
[SpringBoot]DB์ ๊ทผ๊ธฐ์ -JdbcTemplate (0) | 2025.01.09 |
[SpringBoot]์คํ๋ง ํตํฉํ ์คํธ (0) | 2025.01.08 |