/**
  * update document
  *
  * @param DocumentEntity $doc          document entity
  * @param ConfigEntity   $config       config entity
  * @param ConfigEntity   $originConfig original instance config entity
  * @return DocumentEntity
  */
 public function update(DocumentEntity $doc, ConfigEntity $config, ConfigEntity $originConfig = null)
 {
     $this->connection->beginTransaction();
     $doc = $this->document->update($doc, $config);
     if ($config->get('revision') === true && $this->revision->isChanged($doc) === true) {
         $this->revision->insert($doc, $config);
     }
     if ($config->get('division') === true) {
         $diff = $doc->diff();
         if (isset($diff['instanceId'])) {
             $this->document->insertDivision($doc, $config);
         } else {
             $this->document->updateDivision($doc, $config);
         }
     }
     // 인스턴스 아이디 변경 시 이전 인스턴스 디비전 테이블 데이터 삭제
     if ($originConfig != null && $originConfig->get('division') === true) {
         $diff = $doc->diff();
         if (isset($diff['instanceId'])) {
             $doc->instanceId = $doc->getOriginal()['instanceId'];
             $this->document->deleteDivision($doc, $originConfig);
         }
     }
     $this->connection->commit();
     return $doc;
 }