JPA를 사용할 때 Id 값을 Long이나 int 타입으로 설정 했을 때 자동으로 증가되도록 설정하는 경우가 있다.

뭐 Oracle에서는 sequence를 이용해 Nextval, currval로 알아낼 수 있는 방법도 있지만 MySQL에서 설정하는 auto_increment는 그런게 없다.

 

그래서 이전에 MyBatis로 프로젝트를 할 때 방금 저장한 아이디값이 필요한 경우 SELECT로 가장 큰 값을 가져오도록 서브쿼리를 사용한다거나 해서 알아내 넣어줬었다.

 

근데 JPA에서는 간단하게 이 ID값을 알아낼 수 있었다.

 

long id = boardRepository.save(Board).getId();

 

JPA에서는 save로 저장했을 때 return되는 객체가 Entity 자체라고 한다.

 

예를들어 Board라는 Entity에 id, boardTitle, boardContent, userId 이렇게 구성되어있다고 할 때

save()를 하게 되면 이 4개의 데이터가 담긴 객체가 리턴 된다는 것이다.

그래서 get을 통해 id값을 리턴받게 되면 save로 저장해준 데이터의 id값을 받을 수 있게 되는 것이다.

 

 

+ Recent posts