반응형
JPA를 오랫동안 접하질 않아서 계속해서 새로운것을 알게되고 배워가는 재미에 요즘 빠져있다.
오늘 다뤄볼 내용은 JPA에서 repository를 통해서 id기준으로(pk일 경우) 데이터를 가져오는것에 대해서 다뤄볼것이다.
결론만 먼저 말하면
findbyid는 직접적으로 데이터베이스를 다녀오고
getbyid는 데이터베이스를 갔다오지 않는다.
둘의 차이는 데이터베이스에 접근을 직접 하느냐 안하느냐의 차이이다.
그렇기에 getbyid가 성능상 좀더 유리할수 있다.
그렇지만 언제 findbyid를 사용하느냐면
특정 id 값만 사용할 일이 있다면 getbyid가 유리하다.
이 말의 반대 의미는 다른 컬럼들을 사용을 못하기에 findbyid를 사용해서 다른 컬럼들의 값을 가져와야한다.
실제로 코드를 짜게 되면
@GetMapping("/test")
public void getByFindBy() {
userRepository.getById(1);
System.out.println("1------");
userRepository.findById(1);
System.out.println("2------"); }
그럼 나오는 로그가
1------
Hibernate: select ......
2------
이렇게 나온다.
getByid에서는 hibernate가 안나오는것은 데이터베이스에 접근을 하지 않는다는것이다.
성능이 getbyid가 유리하긴 하지만 컬럼값들이 필요한 경우엔 상황에 맞게 findbyid도 써야한다.
상황에 맞게 적절히 사용할수 있어야한다.
반응형
'IT > Java' 카테고리의 다른 글
JPA 복합키 사용법 (44) | 2022.04.02 |
---|---|
JAVA TLS 접속 에러(The server selected protocol version TLS10,TLS11 is not accepted by client preferences) (43) | 2022.03.31 |
Spring 에서 IOC, AOP, DI 에 대하여 (54) | 2022.03.09 |
implements, extends 란? (23) | 2022.02.26 |
JDK , JRE , JVM 차이? (27) | 2022.02.24 |
댓글