목록전체 글 (305)
미래의 나에게 typeORM @nestjs/typeorm typeorm mysql2 typeORM 에 대해 포스팅 전 다루어야 할 개념에 대해 먼저 소개한다. ORM ORM (Object relational Mapping) 은, 그 말마따나 객체와 관계를 맵핑해주는 것을 말한다. 여기서 Mapping 이란, OOP(객체 지향 프로그래밍) 로 이루어진 Class 와, SQL(관계형 데이터 베이스)의 Table 을 연결시켜주는 것을 의미한다. 이전 포스팅에서 ODM(mongoose)를 통해 noSQL문을 작성했던 것처럼 ORM 또한 객체 지향적으로 코드를 작성할 수 있게 도와주는 역할을 한다. Sequelize (JavaScript 에서 일반적으로 사용) Sequelize 는 ORM을 지원하는 라이브러리이며..
decorator 데코레이터는 구조를 수정하지 않고 기존 객체에 새로운 기능을 추가할 수 있도록 하는 디자인 패턴이다. 일반적으로 데코레이터는 함수의 정의 전에 호출되며, 함수를 인수로 얻고 새로운 함수를 돌려주는 구조다. (어찌보면 고차함수 | 콜백함수와 비슷한 느낌이다.) 정리하자면, 데코레이터는 코드를 꾸며주며, 타입스크립트에서는 그 기능을 함수로 나타내는 것. @(골뱅이)로 표현되며, 그 안에는 메소드 / 프로퍼티 / 파라미터 / 클래스가 들어갈 수 있다. 데코레이터 작성 예시 데코레이터 콘솔 결과 CatController 클래스 위에 데코레이터 Controller 가 작성된 모습. CatController 클래스가 함수의 매개변수로 받아져서 함수 Control 내부에서 사용됨으로, Control..
느슨한 결합 (loose-coupling) 느슨한 결합은 객체 간의 연결고리를 헐겁게 하는 것, 즉 다른 Class를 직접적으로 사용하는 의존성을 줄이는 것을 의미하며, 객체 간 매우 강한 연결고리를 갖는 강한 결합(tight coupling)과 반대되는 개념이다. 강한 결합(tight coupling)의 특징 하나의 객체를 변경하게 되면 다른 객체들을 변경을 요구되어 변경점들을 확인하고 쉽게 놓칠 수 있다. 결합이 강하게 되어있어 결합이 되어있지 않으면 사용을 할 수 없게 된다. new를 선언할 때마다 컴퓨터 메모리를 사용하게 되는데 비교적 강한 결합에서 new를 더 많이 사용해 메모리를 많이 잡아먹게 된다. 느슨한 결합의 특징 클래스/클래스를 느슨하게 결합되어 새로운 기능을 개발하거나 기존 기능을 수..
Schema schema 는 DB 의 활용을 편리하게 하기 위해 데이터 간의 연결고리 및 형식을 정의하는 것을 말한다. 특정 데이터 모델을 이용해 만들어지고, 데이터 구조적 특성을 의미한다고 볼 수 있다. Schema 의 3계층 Schema 는 외부 스키마 / 개념 스키마 / 내부 스키마 3가지로 분류된다. 외부 스키마 사용자가 보는 개인적인 DB이며, 일반사용자 또한 SQL을 이용하여 사용 가능 스키마의 일부를 볼 수 있기때문에 서브 스키마라고도 하며, 여러 개가 존재할 수 있음 개념 스키마 DB의 전체적 논리적 구조 시스템 전체를 관장하는 스키마로 하나만 존재 개체 간의 연결고리와 제약 조건을 나타내며, DB의 접근 권한, 보안, 조건 등 규칙에 관한 내용을 정의 내부 스키마 물리적인 저장 장치로써의..
원시자료형과 참조자료형은 자료형에 대한 분류 기준이다. 둘은 비슷한 듯하나, 각기 다른 특징을 가지고 있다. 원시자료형 원시자료형은 객체가 아니며, 메소드를 가지지 않는 6가지 타입이다. string / number / boolean(true & false) / undefined / bigint(너무 큰 수) / symbol(유일 식별자) / (null) 원시자료형의 특징은 변수 하나에 각 하나의 정보만 갖게 되는데(재할당하지 않는 이상), 그 이유는 옛 컴퓨터 메모리의 제한으로 여러가지 자료를 담기 힘들었기 때문이다. (때문에, '원시'자료형) 참조자료형 참조자료형은 배열과 객체, 함수가 대표적인데, 특징을 하나 가진다. 변수는 그 값 자체를 저장하는 것이 아니라, 그 값이 있는 곳의 주솟값을 저장하는..
Class-and-OOP Class class 란 물건을 만드는 설명서와 같은 역할을 한다. ex) class 붕어빵 { 만드는 방법 } => new 붕어빵() ex) class Date { getFullYear(){ }, getMonth(){ }... } => new Date 이렇게 만들어진 new Date 는 내장객체로써 아래와 같이 활용할 수 있다. 객체지향프로그래밍(OOP) = 객체를 활용하여 프로그래밍하는 것을 의미 각각의 함수로 구분하여 활용할 수도 있지만, 함수의 수가 많아지면 관리하기 어렵다는 측면이 있다. 따라서, 관련성이 있는 함수의 경우는 class 객체로 한데 묶어 관리해주는 것이 용이하다. Class 예시 class 를 활용한 속성값이 다른 객체 둘 생성하기 // class 에서는..
Set 은 유일한 값을 저장할 수 있는 객체다. 배열의 형태를 갖는 객체 데이터로, 형태는 아래와 같다. const newSet = new Set() typeof newSet // 'object' Array.isArray(newSet) // false newSet // Set(0) { __proto__: { ...중략 }} set 은 중복 데이터 없이 고유한 값만 저장이 가능하다. // 예시 const newSet = new Set([1,2,3,2,2]) console.log(newSet) // Set(3) { // 1, // 2, // 3, __proto__: {}} 2를 중복으로 포함하고 있는 배열을 Set 객체에 집어넣게 되면, Set은 위와 같이 중복된 값 없이 한번씩만 저장하게 된다. 그리고 아..
This javascript 에서 함수의 this 키워드는 다른 언어들과 비교하여 조금 다르게 동작하며, 대부분의 경우 this의 값은 함수를 호출하는 방법에 의해 결정된다고 한다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/this this - JavaScript | MDN JavaScript에서 함수의 this 키워드는 다른 언어와 조금 다르게 동작합니다. 또한 엄격 모드와 비엄격 모드에서도 일부 차이가 있습니다. developer.mozilla.org 여기서 this가 함수를 호출하는 방법에 의해 결정된다는 말에 집중해보자. // 예시 객체 let ex = { is : "this!", test1 : functio..