DB 메소드 차이 정리
Create, Update API를 구현하다 보면 빈번히 insert()
와 update()
, save()
함수를 사용하게 된다. 정형화된 템플릿처럼 메소드를 사용해왔는데, 정확히 db에서 어떤식으로 작동하는지에 대해서 알고있지 않았던 것 같아 정리해보기로 했다.
insert()
와 update()
는 명확하다. 하지만 문제는 save()
인데, 이 함수는 삽입에도 수정에도 사용해서 더 헷갈림을 유발했던 것같다. 그래서 삽입 시 insert()
와 수정 시 update()
를 각각 save()
와의 동작방식을 비교해 차이점을 적어보았다.
삽입 시 insert()와 save()
insert : id가 동일한 값을 저장하려 한다면 오류 발생
save: id가 동일해도 저장한다(수정한다) 기존에 저장된 데이터 위에 덮어쓴다.
수정 시 update()와 save()
update : 특정 필드만 수정할 수 있다.
save : 필드단위로 수정되지 않고 데이터를 덮어쓰므로 이전데이터는 사라진다.
직접 예시를 들어보면 그 차이는 명확하다. 만약 하기와 같이 id, name, content 라는 컬럼을 가진 데이터가 있다고 하자.
{
"id" : 1,
"name" : "test",
"content" : "기존내용"
}
여기서 name 컬럼의 내용만을 수정해보려고 한다.
먼저, update(1, { "name" : "update" })
를 한다면 결과는 하기와 같다.
{
"id" : 1,
"name" : "update",
"content" : "기존내용"
}
기존의 데이터는 그대로 남아있고, 수정된 내용의 name만 업데이트가 됨을 알 수 있다.
하지만, save({"id":1, "name" : "save" })
를 한다면 결과는 하기와 같다.
{
"id" : 1,
"name" : "save",
}
기존의 데이터는 사라지고, 수정하려고 넣은 데이터로 덮어쓰워짐을 확인할 수 있다.