- 스프링 DB -
- @SpringBootTest DB연동 config를 Spring이 들고 있기 때문에 테스팅 진행에 있어 스프링 컨테이너와 테스트를 함께 실행할 수 있게 해줌
- DB연동 이후 Testing 진행 시 @Transaction 적용하면 DB에 실제 데이터 반영 없이(다음 테스트에 영향 없이) 테스팅 진행 가능 (@AfterEach, BeforeEach 사용 불필요)
- JPA 스프링 Repository 관련 예제 코드
package winterlimited.hellospring.repository;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import winterlimited.hellospring.domain.Member;
import java.util.List;
import java.util.Optional;
public class JpaMemberRepository implements MemberRepository {
// EntityManger DI
private final EntityManager em;
public JpaMemberRepository(EntityManager em) {
this.em = em;
}
@Override
public Member save(Member member) {
// insert
em.persist(member);
return member;
}
@Override
public Optional<Member> findById(Long id) {
// select
Member member = em.find(Member.class, id);
return Optional.ofNullable(member);
}
@Override
public Optional<Member> findByName(String name) {
List<Member> result = em.createQuery("select m from Member m where m.name = :name", Member.class)
.setParameter("name", name)
.getResultList();
return result.stream().findAny();
}
@Override
public List<Member> findAll() {
// m 객체를 대상으로 query를 보냄
return em.createQuery("select m from Member m", Member.class)
.getResultList();
}
}
- 스프링 데이터 JPA -
- JPA를 사용하기 편리하게 해주기 위해 제공되는 라이브러리
- 기본적으로 Interface에서 다양한 기능들을 처리할 수 있고 정해진 규칙에 따라 기본적인 CRUD 제공
- ex) findByName -> JPQL select m from Member m where m.name = ?
'웹 > Spring' 카테고리의 다른 글
[Spring] Spring과 JPA를 사용해보기 - 학식 취향분석 프로그램 (1) (0) | 2023.07.04 |
---|---|
[메모] Spring 원리 (3) 빈 생명주기 콜백, 빈 스코프 (0) | 2023.05.26 |
[메모] Spring 원리 (2) 컴포넌트 스캔, 의존관계 자동주입 (0) | 2023.05.20 |
[메모] Spring 원리 (1) 싱글톤 (0) | 2023.05.20 |
[메모] Spring 입문(1) (0) | 2023.05.13 |