👶 TypeScript

백엔드 프레임워크

개발자 린다씨 2023. 1. 25. 16:16
반응형

백엔드 프레임워크

DB와 상호작용하는 응용 프로그램을 만들 때 처음엔 타입을 갖지 않는 SQL 또는 API 호출을 그대로 사용했을 것입니다.

// node-postgres를 이용한 PostgreSQL
let client = new Client
let res = await client.query(
    'SELECT name FROM members where mId = $2',
    [123456]
) // any

// node-mongodb-native를 이용한 MongoDB
db.collection('members')
.find({mId: 123456})
.toArray((err, member) =>
// member는 any
)

수동으로 타입을 추가하면 대부분의 any를 제거하면서 더 안전한 API로 개선할 수 있습니다.

db.collection('members')
.find({mId: 123456})
.toArray((err, member: Member) =>
// member는 any
)

하지만 SQL API 자체는 여전히 상당히 저수준이므로 순식간에 잘못된 타입을 사용하거나 타입 지정을 깜빡해서 any로 되기 쉽습니다.

 

객체 관계 매퍼인 ORM(Object-Relational Mapper)를 사용하면 이 문제를 해결할 수 있습니다.

 

ORM은 DB 스키마로부터 코드를 만들어 질의, 갱신, 삭제 등의 작업을 할 수 있는 고수준의 API를 제공합니다.

 

정적 타입 언어를 사용한다면 ORM API가 타입 안전성을 제공해 주므로 타입을 잘못 지정하거나 제네릭 타입 매개변수를 수동으로 한정할 걱정을 할 필요가 없습니다.

 

TypeScript로 DB처리할 때는 ORM을 사용할 것을 권합니다.

 

다음은 TypeORM을 이용하여 사용자의 이름을 얻는 모습입니다.

let member = await MemberRepository
.findOne({mId: 123456}) // Member | undefined

ORM은 일반적인 안전성과 타입 안전성을 기본으로 제공하는 고수준 API라는 사실에 주목해야 합니다.

 

그러니 DB를 사용할 땐 항상 ORM을 사용하도록 합시다.

반응형