Spring JPA | Entity์™€ Dto ๋ถ„๋ฆฌ

2025. 2. 17. 22:04ยทTIL

 

Spring JPA๋ฅผ ํ™œ์šฉํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ์ ์ด ์žˆ์–ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

Entity๋ฅผ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ด์ „ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์„œ๋น„์Šค๋‹จ์—์„œ Entity์™€ Dto๋ฅผ ๋นŒ๋” ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณค ํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Entity์— toResponseDto() ๋ฉ”์„œ๋“œ์™€ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์—ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด Entity๋ฅผ ๋ณดํ˜ธํ•˜๋ผ! ๋ผ๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๊ณ , ๊ณ ์น˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ „๋‹ฌ๋ฐ›์•˜๊ธฐ์— ๊ธฐ๋กํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

 

๐Ÿง Entity๋ฅผ ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

Entity๋Š” ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์ด๋ฏ€๋กœ ์ตœ๋Œ€ํ•œ ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋กœ ์œ ์ง€ํ•˜๊ณ , DTO์™€์˜ ์˜์กด์„ฑ์„ ์—†์• ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
Entity๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ 1:1 ๋งคํ•‘๋˜๋Š” ๊ฐ์ฒด์ธ๋ฐ, DTO์™€์˜ ๋ณ€ํ™˜ ๋กœ์ง์ด ๋“ค์–ด๊ฐ€๋ฉด ์—ญํ• ์ด ์• ๋งคํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋ณ€ํ™˜์ด ํ•„์š”ํ•˜๋‹ค๋ฉด DTO์— ๋ณ€ํ™˜ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์˜ณ๋‹ค!

 

์ด์ „์— ์ž‘์„ฑํ•œ Entity ์ฝ”๋“œ

@Entity
@Table(name = "p_restaurant_menu")
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Builder
public class Menu extends BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.UUID)
    private UUID rmId;
    @Column(length = 100, nullable = false)
    private String rmName;
    @ColumnDefault("true")
    private Boolean isPublic;

    public Menu(CreateMenuRequestDto requestDto) {
        this.rmName = requestDto.getRmName();
        this.isPublic = requestDto.getIsPublic();
    }

    public MenuResponseDto toResponseDto() {
        return MenuResponseDto
                .builder()
                .rmId(this.rmId)
                .rmName(this.rmName)
                .isPublic(this.isPublic)
                .build();
    }

์ƒ์„ฑ์ž์™€ toResponseDto ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ๊ฐ RequestDto์™€ ResponseDto๋กœ ์˜ฎ๊ฒจ์„œ ์ž‘์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

 

RequestDto 

@Builder
@Getter
@AllArgsConstructor
public class CreateMenuRequestDto {

    @NotNull
    private UUID resId;
    @Length(max = 100)
    @NotNull
    private String rmName;
    private Boolean isPublic;
    @NotNull
    private UUID resId;
    private Boolean isPublic;

    public Menu toEntity(CreateMenuRequestDto requestDto) {
        return Menu
            .builder()
            .rmName(requestDto.getRmName())
            .isPublic(requestDto.getIsPublic())
            .build();
    }
}

 

ResponseDto

@Getter
@Builder
@AllArgsConstructor
public class MenuResponseDto {
    private UUID rmId;
    private String rmName;
    private Boolean isPublic;
}
    private UUID rmId;
    private String rmName;
    private Boolean isPublic;

    public static MenuResponseDto fromEntity(Menu menu) {
        return MenuResponseDto
            .builder()
            .rmId(menu.getRmId())
            .rmName(menu.getRmName())
            .isPublic(menu.getIsPublic())
            .build();
    }
}

 

 

 

728x90
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

REST API | ๋ฐ์ดํ„ฐ ์ˆ˜์ • api ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ? (PATCH์™€ @DynamicUpdate ์ฐจ์ด์ )  (0) 2025.02.19
REST API ์—์„œ์˜ HTTP ์‘๋‹ต ์ฝ”๋“œ (HTTP 201 Created)  (2) 2025.02.18
ํ”„๋กœ์ ํŠธ | ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ํ™•์žฅ์„ฑ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ  (0) 2025.02.12
MSA | ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค (feat. Resilience4j)  (3) 2025.02.11
TIL : ๋ฌธ์ž์—ด ์Šฌ๋ผ์ด์‹ฑ ์ธ๋ฑ์Šค ์—๋Ÿฌ, ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜  (0) 2023.04.29
'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • REST API | ๋ฐ์ดํ„ฐ ์ˆ˜์ • api ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ๊นŒ? (PATCH์™€ @DynamicUpdate ์ฐจ์ด์ )
  • REST API ์—์„œ์˜ HTTP ์‘๋‹ต ์ฝ”๋“œ (HTTP 201 Created)
  • ํ”„๋กœ์ ํŠธ | ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ํ™•์žฅ์„ฑ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
  • MSA | ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค (feat. Resilience4j)
bamDal
bamDal
๊ด€์‹ฌ์žˆ๋Š” ๋ถ„์•ผ ๊ณต๋ถ€ํ•˜๋Š” ๋ธ”๋กœ๊ทธ.....๐ŸŒ™๐ŸŒฐ
  • bamDal
    ๐ŸŒ™๐ŸŒฐ๋‹ฌ๋ฐค์— ์ฝ”๋”ฉ
    bamDal
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • TIL
      • Back-End
        • JAVA
        • SPRING
        • ํŒŒ์ด์ฌ
        • Linux
      • DataBase
        • MariaDB
      • CS
        • ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜
      • Infra
      • Tool
        • Git
        • IntelliJ
      • Etc
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต
      • Front-End
        • jQuery
        • AJAX
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ์นดํ…Œ๊ณ ๋ฆฌ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • Github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • ๋ฐ˜์‘ํ˜•
    250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
bamDal
Spring JPA | Entity์™€ Dto ๋ถ„๋ฆฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”