해결된 질문
작성
·
158
·
수정됨
0
바쁘신 와중에 너무 옛날 강의 가지고 질문드리는 것이 아닌지 너무 죄송스럽습니다. ㅜ
바쁘신 시간 많이 뺏지 않기 위해 후딱 하나만 여쭤볼게요
Update방식에는 Connected상황과 Disconnected상황이 있고,
Disconnected 상황에서 처리방식으로 ReLoad와 Full방식이 있다는 것까지는 이해했습니다.
다만 Full방식에 있어서 모든 정보를 넘겨주어야 한다는 말씀을 듣고 제가 제대로 이해한게 맞는지 헷갈리기 시작했습니다. ㅜㅜ
제가 이해한 내용은, 일부 정보만가지고 Full방식의 Update를 시도하면 뭔가 Update가 Fail이 될 것이라 생각했습니다.
그런데,
Entity 클래스의 객체를 하나 생성하고 속성값을(Name) 하나만 변경시켜 Update요청을 하였을 때, 특별한 문제없이 Update가 Complete가 됩니다.(다른 속성값들에 대한 정보를 하나도 입력을 안하더라도...)
궂이 모든 정보를 넘겨주지 않고 일부 정보만으로도 Full방식의 Update가 되는 이 상황이 정상적인 것이 맞는지, 뭔가 제가 말씀하신 내용의 요지를 잘못 집고 있는 것인지 말씀해주세요.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. ChaYong님의 질문에 대해 안내드리겠습니다.
질문하신 내용과 밀접하게 관련된 지식공유자님의 답변이 기존에 있어서 정보를 공유드립니다. EF(Core)에서의 Update 처리 방식에 대해 궁금해 하신 것 같습니다. 일부 정보만 가지고 있는 상태에서의 Update, 특히 Disconnected 상황에서의 처리 방식에 대한 부분이 주요 질문인 것 같습니다.
기존 답변 중 “SELECT 후에 디비 업데이트 질문이 있습니다“에서 비슷한 주제를 다루고 있습니다. 이 답변에서 지식공유자는 EF를 사용하여 특정 컬럼만 선택하여 변경 후에 업데이트를 하는 방법에 대해 설명하고 있습니다. 또한, 단편적인 정보만을 가지고 있을 때 어떻게 업데이트를 처리하는지에 대한 상세한 사례와 답변도 포함되어 있습니다.
Disconnected 상황에서 Partial Update를 처리하는 방법에 대해서는 EF의 State Management가 핵심 역할을 한다는 점을 이해하시면 도움이 될 것입니다. Entity의 State를 통해 EF는 어떤 프로퍼티가 변경되었는지를 추적하고, 실제 데이터베이스에 적용할 때는 변경된 프로퍼티에 해당하는 컬럼만 업데이트 하는 방식으로 동작합니다.
ChaYong님께서 언급한 상황이 정상적인 것이 맞습니다. EF에서는 특정 프로퍼티만 변경되었을 경우, 해당 프로퍼티에 대응하는 데이터베이스의 컬럼만 업데이트를 실행합니다. 그렇기 때문에 “Full방식”이라고 하더라도 실제로는 변경된 부분만 처리하는 것으로 이해해주시면 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
루키스님이 'Full' 처리 방식의 업데이트 단점으로 '모든 정보'를 넘겨주어야하고 때문에 보안상 문제가 생길 수 있다고 말씀하셨는데요.
AI답변을 보자면 '모든 정보'를 넘겨주지 않아도 된다는 말 인 것 같아요.(제 생각에는...)
그럼 단순히 Full방식이 보안상 문제를 일으킬 수 있다고 보긴 어려울 것 같고(뭔가 다른 요소로 인해 보안상 문제가 발생할 수도?), 오히려 추가적인 Read가 없으니 단순히 Db정보를 업데이트 할 때에는 Full방식이 더 좋은 게 아닐까 조심스럽게 생각해봅니다.