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값을 받을 수 있게 되는 것이다.
'Spring' 카테고리의 다른 글
DTO, VO, Entity의 분리 (0) | 2023.09.27 |
---|---|
프로젝트에 WebClient 사용해보기 (0) | 2023.06.08 |
JPA 양방향 연관관계 Entity DB 저장 문제 (0) | 2022.12.19 |
WebSecurityConfigurerAdapter Deprecated 해결 (0) | 2022.12.06 |
IoC와 DI(7. Bean 설정 분할과 profile별 설정) (0) | 2022.08.31 |