[JPA] Entity 저장

Junseo Kim·2020년 3월 31일
0

Entity 저장

repository.save()를 하면 엔티티가 하나 추가된다.

save()는 추가 뿐만 아니라 수정에도 사용한다.

save()는 이 객체가 새로운 객체인지 기존 객체인지 판단하여, 새로운 객체가 아닌경우 EntityManager의 merge쪽으로 보낸다.

EntityManager

EntityManager에는 persist()와 merge()가 있는데 persist()는 Transient상태(새로 만들어진 객체)를 Persistent상태로 만들어주는 것이고, merge()는 Detached상태(한 번이라도 DB에 Persistent가 됐었던 객체)를 Transient상태로 되돌려주는 것이다.

repository.save()를 할때 리턴 값을 받아서 사용하기

-> save()를 해도 반영이 안 될 수 도 있기 때문이다. persist인 경우는 리턴 값을 사용하지 않아도 반영되지만, merge인 경우는 반영되지 않는다.

Ex.
Post updatedPost = postRepository.save(post); 가 있을때

post.setTitle("test") - x(이렇게 사용 x)
updatedPost.setTitle("test") - O(리턴값 받아서 사용)

0개의 댓글