ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 24-07-08 (Entity란 ?)
    카테고리 없음 2024. 7. 9. 23:56

    Typescript , Nest.js를 배우고, 작업을 하면서 Entity와 Dto의 역할은 무엇이며, 또한 각자 역할이 무엇인지 알아야겠다....

    Entity는 사용하면서 Database랑 validate와 table를 생성하는 역할에 기여를 하는것 같은데 내 생각이 맞는지 한번 정리를 해봐야 할꺼같다 . 

    금일은 Entity를 알아보고 다음날에는 Dto 정리를 한번 해봐야겠다.

     

     

    Entity란 ?

    ( Entity는 데이터베이스의 테이블과 매핑되는 객체입니다.

    간단히 말해, 데이터베이스 테이블의 스키마를 정의하고 해당 스키마에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행하는 데 사용됩니다. )

    인터넷에서는 이런식으로 나오지만, 

     

    @Controller('auth')
    export class AuthController {
      constructor(private readonly authService: AuthService) {}
      @Post('/sign-up')
        async signUp(@Body() {email, password, passwordConfirm, name}:SignUpDto){
          const data = await this.authService.signUp(email, password, passwordConfirm, name);
          return {statusCode:HttpStatus.CREATED, message:"회원가입에 정상적으로 완료되었습니다.", data:{...data, password:undefined}}
        }
    
      @UseGuards(AuthGuard('customLocal'))
      @Post('/sign-in')
        async signIn(@Request() req, @Body() SignInDto:SignInDto){
          return req.user
        }

     

    이렇게 컨트롤러에서 보면은 data를 가져오는곳은 Dto에서 가져오는것을 볼 수있다 ....

    그렇다면 왜 테이블과 스키마를 Entity에서 정의하지만 , Dto에서 가져오는 것일까...? Dto에 대해서 정리하면서 나중에 생각해보면서 알아보자..

     

    또 엔티티는 데이터베이스의 테이블과 일치하는 객체이고, 다음과 같은 특성을 나타낼 수 있다 

     

    ID, 속성, 관계를 나타내며 

    ID: 엔터티를 식별하는 고유한 값입니다.
    속성: 엔터티의 데이터를 저장하는 속성입니다.
    관계: 다른 엔터티와의 관계입니다.

     

    ex)

    @Entity('seats')  
    export class Seat {
      @PrimaryGeneratedColumn({unsigned:true})
      id:number
    
      @Column({unsigned:true})
      scheduleId:number
    
      @Column({unsigned:true})
      avaliableSeat:number
    
      @Column()
      totalSeat:string
    
      @CreateDateColumn()
      createdAt:Date
    
      @UpdateDateColumn()
      updatedAt:Date
    
      @OneToOne((type)=>Schedule, schedule=>schedule.seats)
      @JoinColumn()// schedule이 외래 키 컬럼임을 나타내며, 관계를 정의하는 데 사용된다 .
      schedules:Schedule
    }

     

    @Entity() 데코레이터는 엔티티임을 나타냅니다. 

    @PrimaryGeneratedColumn() 데코레이터는 ID 속성을 나타냅니다. 

    @Column() 데코레이터는 속성을 나타냅니다.

    @oneToOne() 데코레이터는 다른 엔티티간에 관계를 나타내줍니다.

     

     

    마무리

    Entity는 데이터베이스의 테이블간에 일치하는객체를 나타내며 , 그 컬럼간에 속성과 관계 및 특성을 정의할 수 있다.

    어느 정도코드를 만들고 메서드를 사용하면서, 느낀것과 비슷하였지만, Entity를 정리해가면서, 더욱 Dto를 왜 사용하는지 궁금증이 만들어졌다. Dto를 정리하고 공부하면서 Entity를 한번 더 정리하는것도 좋을꺼같다.

Designed by Tistory.