웹 어플리케이션(with 스프링)
javax.persistemce.NoResultException예외가 발생하면,org.springframework.dao.EmptyResultDataAccessException- 데이터베이스 관련 예외는
DataAccessException참고
- 데이터베이스 관련 예외는
@PersistenceContext: 스프링이나 J2EE에서 관리하는 컨테이너에서EntityManager를 주입@PersistenceUnit:EntityManagerFactory주입- JUnit에서
@Transactional은 기본적으로 테스트가 끝나면 롤백한다.
스프링 데이터 JPA
- DAO, Repository와 같은 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다.
- 스프링 데이터 프로젝트에는 JPA, MongoDB, Neo4j, Redis, Hadoop 등등이 있고 이를 추상화하고 있다.
- 공통 인터페이스로 인해 자주 사용되고 기본적인 CRUD를 제공한다.
... JpaRepository<T, ID extends Serializable> ...
JpaRepository
└─ CrudRepository
└─ PagingAndSortingRepository
└─ Repository
- 특징
- 메소드 이름으로 쿼리 생성
- 메소드 이름으로 JPA NamedQuery 호출
@Query를 활용한 쿼리 정의
@Modifying- 페이징과 정렬
PageRequest,Page,Pageable,Sort
@QueryHints@Lock
명세
- JPA Criteria
org.springframework.data.jpa.domain.Specification- 컴포지트 패턴
where(),and(),or(),not()제공
웹 확장
@EnableSpringDataWebSupport- 도메인 클래스 컨버터, 페이징, 정렬
HandlerMethodArgumentResolver구현체들