본문 바로가기
IT/Java

JPA (getById / findById) 차이

by 성준하이 2022. 3. 18.
반응형

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도 써야한다.

상황에 맞게 적절히 사용할수 있어야한다.

반응형

댓글