@Configuration 설정클래스에 @EnableJpaRepositories 를 사용해야 JpaRepository 를 상속 받은 프록시 Bean 을 제공한다.
- 스프링 부트는 기본적으로 제공하는 기능이기에 사용하지 않아도 된다.
- EntityManager , TransactionManager, PackageScan 시작 점 들을 등록할 수 있는게 @EnableJpaRepositories
JpaRepository 의 구현체인 SimpleJpaRepository 에 @Repository 어노테이션이 붙어있는데 @Repository 를 붙이는 것은 중복
- @Repository 어노테이션이 붙게 되면 SQLException JPAException 등을 Spring 내부적으로 DataAccessException 으로 변환한다.
// 빈 이름이 겹치는 상황
@Repository("jpaPostRepository")
public interface PostRepository extends JpaRepository<Post,Long> {
}
@DataJpaTest
class PostRepositoryTest {
@Autowired
@Qualifier("jpaPostRepository")
private PostRepository postRepository;
@Test
public void crud(){
Post post = new Post();
post.setTitle("jpa");
postRepository.save(post);
List<Post> all = postRepository.findAll();
assertThat(all.size()).isEqualTo(1);
}
}
하이버네이트 내부 Exception . 이름과 사유가 직관 적이다.
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
SpringFramework 내부 적으로 DataAccessException 으로 변환한 모습.
org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save()
'springframework > Spring Data JPA' 카테고리의 다른 글
Spring Data JPA : 쿼리 메서드 (0) | 2020.11.18 |
---|---|
Spring Data JPA : Enity 저장 (0) | 2020.11.18 |
Spring Data Common : Web - HATEOAS (0) | 2020.11.17 |
Spring Data Common : Web - Pageable , Sort (0) | 2020.11.17 |
Spring Data Common : Web - Domain Class Converter (0) | 2020.11.17 |