반응형
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
- 알고리즘공부
- 스프링부트공부
- 자료구조공부
- 기술면접공부
- nestjs
- JPA
- nestjs스터디
- nestjs공부
- 스프링부트
- 코테공부
- K8S
- querydsl
- 플러터 개발
- Flutter
- 자바공부
- Kafka
- JPA공부
- 스프링공부
- JPA스터디
- JPA 공부
- 플러터 공부
- Axon framework
- DDD
- 스프링 공부
- 코테준비
- 프로그래머스
- 기술공부
- 스프링
- 카프카
- JPA예제
Archives
- Today
- Total
DevBoi
[NestJs] 다대일 매핑 본문
반응형
다대일 매핑은 한개의 객체와 여러개의 객체의 연관관계를 나타낸 객체 매핑이다.
쉽게 얘기하면 아래와 같다.
만약에 어떤 업체가 음식들을 등록한다고 가정했을떄,
해당 업체:푸드 는 1:N이다.
엔티티에서는 아래와 같이 정의가 가능하다.
@JoinColumn()
@ManyToOne(() => Corp, (corp) => corp.foods)
corp : Corp; //업체 매핑
업체는 프라이머리키를 표현해서 아래와 같이 또 표현 가능하다.
@OneToMany(() => Food, (food) => food.corp)
foods: Food[]
그러면 이때 CRUD로직은 어떻게 변하는지 확인해보자
우선 해당 관련 controller ~ repoistory를 작성할 것이다.
완벽한 설계다 라는 확신은 없는데, 우선 그래도 효율적으로 짠것같긴한다.
(controller)
@ApiOperation({ summary: '음식 정보 생성' })
@ApiParam({
description: 'corp find by id',
type: FoodReqDto,
name: 'post'
})
@Post('')
postCorp(@Body('food') foodReqDto :FoodReqDto) : Promise<Food>{
return this.foodService.saveFood(foodReqDto);
}
(service)
@Injectable()
export class FoodService {
constructor(
@InjectRepository(Food)
private foodRepository : FoodRepostiory,
@InjectRepository(Corp)
private corpRepository : CorpRepostiory
){}
async saveFood(foodReqDto: FoodReqDto): Promise<Food> {
const corp = await this.corpRepository.findOne(foodReqDto.corp);
const food = new Food(foodReqDto,corp);
return this.foodRepository.save(food);
}
(repository)
@EntityRepository(Food)
export class FoodRepostiory extends Repository<Food>{
}
corpId도 그냥 같은레벨의 값으로 가져오는데.. 이부분은 좀 더 고민해봐야겠다.
생성할때 먼저 corp에 대한 정보를 찾고, 음식을 저장하는 것이 제일 최적이라고 생각하긴하는데..뭔가 더 좋은 방법이 있을것같기도하다
반응형
'Develop > [NestJs]' 카테고리의 다른 글
[NestJS] S3이미지 업로드 모듈 제작 (0) | 2023.07.01 |
---|---|
[NestJs] S3업로드 모듈 생성 (0) | 2023.06.26 |
[NestJs] Api 좀 더 Restful 하게 변경 (0) | 2023.06.18 |
[NestJs] 수정, 삭제 (0) | 2023.06.18 |
[NestJs] Post , 생성 (0) | 2023.06.18 |