본문 바로가기

항해99

WIL: 시간 투자 = 개인적 삶 내려놓기? feat. ORM

항해99 53일차. 부트캠프에 많은 시간을 쏟고 있다. 월수금 퇴근후 4시간, 토요일 12시간 + α .

수면 시간은 줄고 노트북 앞에 앉아있는 시간은 늘어났다. 이 와중에 매일 운동하러 가는 목표를 세웠지만 졸린 것은 어쩔 수 없다. 월수금요일에는 운동할 시간이 새벽 5시 뿐이다. 돈만 있다면 직장을 쉬면서 할테지만 돈이 없다. 이 운동은 사실 평생 하기로 결정한 것이었는데 자꾸 빼먹게 되어 마음이 아프다. 

 

의미 없다고 느끼는 현 직장에 많은 시간을 뺏기면서 부트캠프를 하고, 내 개인적 삶까지 살아 내려면 어떻게 해야 할까? 어떻게 하면 더 충만한 에너지와 명료한 정신으로 그 운동을 하고 독서하고 잠까지 잘 수 있을까?

나는 이 질문이 사치스럽다고 생각하지 않는다. 부트캠프와 개인적 삶, 둘 중의 하나만 선택해야 하는 상황은 아니다. 그 둘은 같이 갈 것이다. 서로가 서로를 보완하면서. 이런 생각을 하다니, 철학자 납셨다.

 

사실 내 안의 그 철학자는 납시는데 그치지 않고, 이 질문에 계속해서 실험적인 답안을 내놓는다. 감사할 따름이다.

 

이러한 소란을 일으킨 부트캠프는 어쨌든 무심하게 흘러가고 있다. 53일차면 중반이다. 내 개인적으로, 과정에서 요구한 것은 해내었다. 선택적인 과정까지는 완성하지 못했다. 다른 수강생과의 비교는 이 사회에서는 할 수밖에 없었고, 나의 위치는 너무 고통스럽지 않을 정도이다.

 

우연히, 이 부트캠프의 보딩패스(운영진 측 메시지)와 관련된 책을 집에서 발견했다. 그냥 그러하다. 

 

 

Feat. ORM (Object Relational Mapping)

ORM은 객체와 데이터베이스의 관계를 맵핑해주는 도구이다. 코드로 예를 들자면 아래와 깃헙 리포와 같다. 2023.5.10. 커밋을 확인하면 된다.

https://github.com/Munaso/Node.lv2

 

위 프로젝트에서 /models/posts.js 파일과 users.js 파일을 참조하면 관계 맵핑의 간단한 예시를 찾을 수 있다. 파일의 아래 부분 참고할것.

// models/posts.js

class Posts extends Model {

    static associate(models) {
      // 1. Posts 모델에서
      this.belongsTo(models.Users, { // 2. Users 모델에게 N:1 관계 설정을 합니다.
        targetKey: 'userId', // 3. users 모델의 userId 컬럼을
        foreignKey: 'userId', // 4. posts 모델의 UserId 컬럼과 연결합니다.
      });
    }
  }

 

 

20230507085010-create-posts.js 파일을 보면 아래 코드가 있다. 여기서 onDelete: 'CASCADE'  부분에 주석을 달아 놓았다. Users 테이블과 Posts 테이블 간의 관계가 설정된 부분이다. 이런 식으로 미리 설정된 관계에 따라서 한 테이블의 데이터가 바뀌면 다른 테이블의 데이터까지 자동으로 바뀐다. 

// 20230507085010-create-posts.js

	userId: {
        type: Sequelize.INTEGER,
        references: {
          model: 'Users', // Users 모델을 참조합니다.
          key: 'userId', // Users 모델의 userId를 참조합니다.
        },
        onDelete: 'CASCADE', // 만약 Users 모델의 userId가 삭제되면, Posts 모델의 데이터가 삭제됩니다.

      },

 

결론은 양날의 검이라고 할 수 있다. 

 

SMILE ^^