문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:jpa:springdatajpa [2023/07/10 15:05] kwon37xi [Pageable 대신 Slice 사용] |
java:jpa:springdatajpa [2024/02/07 14:43] kwon37xi [Repository 구현] |
||
---|---|---|---|
줄 34: | 줄 34: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ===== 모든 Repository 에는 @Transactional 붙이기 ===== | ||
+ | * Spring Data JPA 뿐만 아니라 모든 Repository 에는 명시적으로 '' | ||
+ | * 그렇지 않으면 Repository 에 추가된 메소드에는 트랜잭션이 걸리지 않는다. | ||
+ | * 트랜잭션 없이 DB 작업이 수행되면 다양한 문제를 겪을 수 있다. | ||
+ | * 특히 JDBC DataSource 에서 '' | ||
+ | * Spring 은 JPA EntityManager 의 경우 DB 관련 작업이 시작되면 EM 을 생성하고 커밋/ | ||
+ | |||
+ | <note warning> | ||
+ | 모든 Repository 에는 '' | ||
+ | </ | ||
===== Repository 상속 금지 ===== | ===== Repository 상속 금지 ===== | ||
줄 49: | 줄 60: | ||
* 대부분의 실무 서비스는 이런 방식의 페이징을 사용하면 시스템이 사용할 수 없을 정도로 큰 부하를 일으킨다. | * 대부분의 실무 서비스는 이런 방식의 페이징을 사용하면 시스템이 사용할 수 없을 정도로 큰 부하를 일으킨다. | ||
* 다른 문제 : page의 시작인 기본이 0인데 문제는 보편적인 서비스의 page 번호는 1로 시작한다. 이를 헷갈려 해서 호출자가 첫번째 페이지를 1로 호출하는 경우가 많다. 설정으로 해결 가능하나 이를 지키지 못하는 경우가 많이 발생한다. | * 다른 문제 : page의 시작인 기본이 0인데 문제는 보편적인 서비스의 page 번호는 1로 시작한다. 이를 헷갈려 해서 호출자가 첫번째 페이지를 1로 호출하는 경우가 많다. 설정으로 해결 가능하나 이를 지키지 못하는 경우가 많이 발생한다. | ||
+ | * [[database: | ||
===== Pageable 대신 Slice 사용 ===== | ===== Pageable 대신 Slice 사용 ===== |