JpaRepository의 구현체 TestRepository
public interface MemoRepository extends JpaRepository<Memo, Long> {
}
findById()
java,util 패키지의 Optional type으로 반환한다. (결과가 존재하는지 체크 가능)
findById()는 실행하는 순간 SQL은 처리 된다.
public void testSelect() {
Long mno = 10L;
Optional<Memo> result = memoRepository.findById(mno);
System.out.println("************");
if (result.isPresent()) {
Memo memo = result.get();
System.out.println(memo);
}
}
아래의 결과를 보면 SQL이 처리된 후 Memo를 print한 결과를 볼 수 있다.
getOne()
@Transactional 어노테이션이 필요하다.
@Transactional 어노테이션은 트랜잭션 처리를 위해 사용한다.
getOne()은 해당 객체를 리턴한다.
실제 객체가 필요한 순간까지 SQL을 실행하지 않고 실제 객체를 사용하는 순간 SQL이 동작한다.
@Test
@Transactional
public void testSelect() {
Long mno = 10L;
Memo memo = memoRepository.getOne(mno);
System.out.println("************");
System.out.println(memo);
}
아래의 결과를 보면 getOne()으로 리턴된 memo를 print하여 사용하는 시점에서 SQL이 처리된결과를 볼 수 있다.
geOne()은 getById()로 대체되었다.
'Spring boot' 카테고리의 다른 글
[Spring Boot] Validation @Max 와 @Size의 차이 (0) | 2022.04.11 |
---|---|
[Spring boot] 배포 패키징 jar 에서 war로 변경 (1) | 2022.04.10 |
[Spring Boot] JPA Caching 적용하기 (0) | 2022.03.21 |
[Spring Boot] PasswordEncoder.mathes() 암호화된 패스워드 비교 (0) | 2022.03.21 |
[Spring Study Group] Spring MVC 요청 경로/클래스 레벨/경로 패턴 / Http 메서드 매핑설정 (0) | 2021.11.07 |