반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- typeorm
- nestjs
- RxCocoa
- NullObject
- operator
- Operater
- SWIFT
- graphql
- Operators
- init
- init?
- Xcode
- vim
- Bug
- SwiftUI
- RxSwift
- URL(string:)
- @EnvironmentObject
- @State
- @Environment
- nonisolated
- swift6
- @Binding
- RFC1738/1808
- NavigationLink
- Creating Operators
- dismiss
- IOS
- ios14
- subject
Archives
- Today
- Total
Tunko Development Diary
[NestJS] [TypeOrm] Active Record 패턴vs Data Mapper 패턴 본문
Active Record 와 Data Mapper 는
TypeOrm에서 사용 되는 일종의 패턴을 의미한다.
- Active Record 예시
// example how to save AR entity const user = new User(); user.firstName = "Timber"; user.lastName = "Saw"; user.isActive = true; await user.save();
// example how to remove AR entity
await user.remove();
// example how to load AR entities
const users = await User.find({ skip: 2, take: 5 });
const newUsers = await User.find({ isActive: true });
const timber = await User.findOne({ firstName: "Timber", lastName: "Saw" });
정말 간단하게 이야기하면
User entity 에 접근헤서 CRUD 기능을 구현한다 했을떄 매 쿼리마다 바로 new User() 등을 사용해 객체를 생성해서 제공되는 메서드를 사용해 DB 에접근하는 방식
- Data Mapper 예시
```javascript
const userRepository = connection.getRepository(User);
// example how to save DM entity
const user = new User();
user.firstName = "Timber";
user.lastName = "Saw";
user.isActive = true;
await userRepository.save(user);
// example how to remove DM entity
await userRepository.remove(user);
// example how to load DM entities
const users = await userRepository.find({ skip: 2, take: 5 });
const newUsers = await userRepository.find({ isActive: true });
const timber = await userRepository.findOne({ firstName: "Timber", lastName: "Saw" });
위 예시와 별반 다를 건 없다 다만 한가지 다른점은
const userRepository = connection.getRepository(User);
이 부분이다. 즉 이건 해당 Entity 전용 메니저 클래스를 만들어 사용할때를 의미한다.
요약
어떤 패턴이 좋고 나쁘다곤 할 수 없다.
접근성이 좋은 방식은 Active Record 방식이다. 단순하고 작은 앱에서 유용하다고 한다.
Data Mapper 는 Entity별로 별도의 매니저클래스를 두는 방식이다. 이 방식은 규모가 있는 앱에서 효과적이다.
반응형
'Development > Nest.js' 카테고리의 다른 글
[NestJS, GraphQL, typeORM]GraphQL Enum Column 생성 (0) | 2021.04.24 |
---|---|
[NestJS][GraphQL] mapped-types 정리 (2) | 2021.04.14 |
[NestJS] Configuration 환경변수 설정 [@nestjs/config, cross-env, joi] (0) | 2021.04.10 |
[Nest.js][GraphQL] 기반 postgres DB 설치 (0) | 2021.04.10 |
[nest.js/graphql] 설치 및 세팅 (0) | 2021.04.10 |
Comments