728x90
스프링 데이터 JPA
3. 스프링 데이터 Common
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
해당 포스팅 참고 인프런 강의
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
2. 스프링 데이터 Common: Repository 인터페이스 정의하기
Repository 인터페이스로 공개할 메소드를 직접 일일히 정의하고 싶다면
JpaRepository 에서 들어오는 기능들이 싫고 직접 정의하고 싶다면 두가지 방법이 있음
특정 리포지토리 당 @RepositoryDefinition
내가 사용할 기능을 내가 직접 메서드를 정의
메서드에 해당하는 기능을 스프링 데이터 JPA가 구현할 수 있는 것이라면 구현해서 기본으로 제공해줌
@RepositoryDefinition(domainClass = Comment.class, idClass = Long.class)
public interface CommentRepository {
Comment save(Comment comment);
List<Comment> findAll();
}
공통 인터페이스 정의 @NoRepositoryBean
@NoRepositoryBean
public interface MyRepository<T, ID extends Serializable> extends Repository<T, ID> {
<E extends T> E save(E entity);
List<T> findAll();
long count();
}
정의한 공통 인터페이스를 상속받아서 사용
public interface CommentRepository extends MyRepository<Comment, Long>{
}
테스트 실습
@RunWith(SpringRunner.class)
@DataJpaTest
public class CommentRepositoryTest {
@Autowired
CommentRepository commentRepository;
@Test
public void crud() {
Comment comment = new Comment();
comment.setComment("Hello Comment");
commentRepository.save(comment);
List<Comment> all = commentRepository.findAll();
assertThat(all.size()).isEqualTo(1);
long count = commentRepository.count();
assertThat(count).isEqualTo(1);
}
}
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 데이터 JPA] 3-4. 스프링 데이터 Common: 쿼리 만들기 개요 (0) | 2019.11.23 |
---|---|
[스프링 데이터 JPA] 3-3. 스프링 데이터 Common: Null 처리하기 (0) | 2019.11.23 |
[스프링 데이터 JPA] 3-1. 스프링 데이터 Common: Repository (0) | 2019.11.23 |
[스프링 데이터 JPA] 3-0. 스프링 데이터 JPA 활용 파트 소개 (0) | 2019.11.23 |
[스프링 부트 개념과 활용] 4-10. 스프링 데이터 8부: 데이터베이스 마이그레이션 (0) | 2019.11.23 |
댓글