2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

cakephp3 트렌젝션 거는 방법

예를 들어, 데이터베이스의 필드에 +1 을 해야하는 경우, 동시에 복수의 이용자가 업데이트를 해 버리면 대략 난감...
혹은 업데이트 하는 중간에 뭔가 문제가 생겨서 변수만 증가되고 데이터베이스에는 업데이트가 이루어지지 않고 끝난다던가..
여러가지 문제가 있을 수 있으므로 이런 경우에는 동시에 데이터베이스 입력이나 수정을 못 하게끔 잠글 필요가 있다.

논리적으로 락을 걸 수 있으나 (디비에 필드 만들어서 켜 있는 경우에는 입력변경 금지 시키고 꺼 있는 경우에는 가능하게끔) 데이터베이스의 트렌젝션을 이용해도 된다는 이야기에 솔깃해서 찾아보니 cakephp3 에도 기본적인 트렌젝션은 패키지로 제공하고 있더라.


음..제대로 움직이는지 아직 테스트를 안 해봐서 모르겠지만 일단 에러없이 돌아는 간다.
> SectionController.php
<?php
namespace App\Controller;
// 요 세 개 추가요~
use Cake\ORM\TableRegistry;
use Cake\Datasource\ConnectionManager;
use Exception;

// 필요한 곳에 다음과 같이 기술함.
    public function add()
    {
        $connection = ConnectionManager::get('default');
        $connection->begin();

        try
          {
             // 다른 코드 생략...+1하고 업데이틑 하는 부분만 정리
              if(isset($master))
              {
                $current_idx = $master->current_idx + 1;
                $query = $this->Masters->query();
                $query->update()
                ->set(['current_idx' => $current_idx])
                ->where(['customer_idx' => $customer_idx])
                ->execute();

                $connection->commit();
              }
              else
              {
                  $this->Flash->error(__('에러다에러에러에러에러에러에러에러'));
              }
            }
            catch(Exception $e)
            {
                  $connection->rollback();
            }
        }

계속 조금씩 배워가며 어찌어찌 만들고는 있는데 영...불안한 것이 바로 이런 예외처리나 보안관련처리를 거의 안 하고 있다는 점...
뭔가 불안하기는 한데 어찌 처리해야 할지를 모르니 정말 예쁘고 바르게 이용하면 잘 돌아가나 조금만 삐딱한 마음 먹으면 여러가지 병크를 일으킬 수 있는 시스템이 되어...버리고 있다 ㅠㅠ

뭐..나중에 테스트 할 때 까이면서 배우는 수 밖에 없으려나 쿨럭

댓글

이 블로그의 인기 게시물

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[react-native] uuid 생성이 에러가 날 때 대처법