{"id":1539,"date":"2020-12-30T21:20:31","date_gmt":"2020-12-30T12:20:31","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1539"},"modified":"2021-01-03T16:26:22","modified_gmt":"2021-01-03T07:26:22","slug":"dto-entity-%eb%a7%a4%ed%95%91","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1539","title":{"rendered":"DTO Entity \ub9e4\ud551"},"content":{"rendered":"<h1>DTO Entity \ub9e4\ud551<\/h1>\n<p><code>MapStruct<\/code> \ub97c \uc774\uc6a9\ud574 \ub9e4\ud551\uc744 \uc790\ub3d9\ud654\ud569\ub2c8\ub2e4.<\/p>\n<h2>MapStruct \uc124\uce58<\/h2>\n<p><code>build.gradle<\/code> \uc5d0 \ub2e4\uc74c\uc758 \ub0b4\uc6a9\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-gradle\">dependencies {\n    \/\/ ......\n    implementation &#039;org.mapstruct:mapstruct:1.4.1.Final&#039;\n    \/\/ ......\n    annotationProcessor &#039;org.mapstruct:mapstruct-processor:1.4.1.Final&#039;\n    \/\/ ......\n}<\/code><\/pre>\n<h2>Entity, DTO \ud074\ub798\uc2a4 \ucd94\uac00<\/h2>\n<p><code>@Setter<\/code>, <code>@Getter<\/code>, <code>@NoArgsConstructor<\/code> \ub294 \ubc18\ub4dc\uc2dc \uc124\uc815\ud574 \uc90d\ub2c8\ub2e4.<\/p>\n<p>MapStruct \uc758 \uc791\ub3d9\ubc29\uc2dd\uc774 \uc77c\ub2e8 \ud074\ub798\uc2a4\ub97c <code>@NoArgsConstructor<\/code> \ub85c \uc0dd\uc131 \ud6c4, <code>@Setter<\/code>, <code>@Getter<\/code> \ub97c \uc774\uc6a9\ud574 \uac12\uc744 \ub9e4\ud551\ud558\uae30\uc5d0 \ub204\ub77d\ub418\uba74 \uc548\ub429\ub2c8\ub2e4.<\/p>\n<p>\uc2ec\uc9c0\uc5b4 \uc0c1\uc18d\uc744 \ubc1b\ub294\ub2e4\uba74 \ubd80\ubaa8 \ud074\ub798\uc2a4\uc5d0\ub3c4 <code>@Setter<\/code>, <code>@Getter<\/code> \ub97c \uc124\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><strong>\uc624\ub958\uc758 99% \uac00 <code>@Setter<\/code>, <code>@Getter<\/code> \ub204\ub77d\uc785\ub2c8\ub2e4.<\/strong><\/p>\n<pre><code class=\"language-java\">@Setter\n@Getter\n@NoArgsConstructor\n@Entity\n@Table(name = &quot;tbl_partners&quot;, catalog = &quot;db_partners&quot;)\npublic class Partners extends BaseTimeEntity {\n\n    @Id\n    private String partnerId;\n\n    @Column(length = 128, nullable = false)\n    private String partnerName;\n\n    @Column\n    private String useyn;\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Getter\n@Setter\n@NoArgsConstructor\npublic class PartnersDto extends BaseTimeDto implements Serializable {\n\n    private String partnerId;\n\n    private String partnerName;\n\n    private String useyn;\n}<\/code><\/pre>\n<h2>Mapper \uc0dd\uc131<\/h2>\n<p>Mapper \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub9e4\ud37c \ud074\ub798\uc2a4\ub294 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">@Mapper\npublic interface PartnersMapper {\n\n    Partners to(PartnersDto d);\n    PartnersDto to(Partners e);\n}<\/code><\/pre>\n<h2>Service \uc0dd\uc131<\/h2>\n<p>\ub9e4\ud37c\ub97c \uc0dd\uc131\ud574\uc11c \uc790\ub3d9 \ub9e4\ud551\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">@Service\npublic class PartnersService extends CustomGenericService&lt;PartnersDto, Partners, String, String&gt; {\n\n    private final PartnersMapper mapper = Mappers.getMapper(PartnersMapper.class);\n\n    \/\/ ......\n\n    @Override\n    public PartnersDto toDto(Partners partners) {\n        return mapper.to(partners);\n    }\n\n    @Override\n    public Partners toEntity(PartnersDto e) {\n        return mapper.to(e);\n    }\n\n    \/\/ ......\n}<\/code><\/pre>\n<h2><code>List&lt;Entity&gt;<\/code>, <code>List&lt;DTO&gt;<\/code> \ub9e4\ud551<\/h2>\n<p><code>List.stream().map()<\/code> \uc744 \uc774\uc6a9\ud574 \ub9e4\ud551\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">@Service\npublic class PartnersService extends CustomGenericService&lt;PartnersDto, Partners, String, String&gt; {\n\n    private final PartnersMapper mapper = Mappers.getMapper(PartnersMapper.class);\n\n    \/\/ ......\n\n    @Override\n    public PartnersDto toDto(Partners partners) {\n        return mapper.to(partners);\n    }\n\n    @Override\n    public Partners toEntity(PartnersDto e) {\n        return mapper.to(e);\n    }\n\n    private List&lt;PartnersDto&gt; toDto(List&lt;Partners&gt; lst) {\n\n        return lst.stream().map(this::toDto).collect(Collectors.toList());\n    }\n\n    \/\/ ......\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>DTO Entity \ub9e4\ud551 MapStruct \ub97c \uc774\uc6a9\ud574 \ub9e4\ud551\uc744 \uc790\ub3d9\ud654\ud569\ub2c8\ub2e4. MapStruct \uc124\uce58 build.gradle \uc5d0 \ub2e4\uc74c\uc758 \ub0b4\uc6a9\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. dependencies { \/\/ &#8230;&#8230; implementation &#039;org.mapstruct:mapstruct:1.4.1.Final&#039; \/\/ &#8230;&#8230; annotationProcessor &#039;org.mapstruct:mapstruct-processor:1.4.1.Final&#039; \/\/ &#8230;&#8230; } Entity, DTO \ud074\ub798\uc2a4 \ucd94\uac00 @Setter, @Getter, @NoArgsConstructor \ub294 \ubc18\ub4dc\uc2dc \uc124\uc815\ud574 \uc90d\ub2c8\ub2e4. MapStruct \uc758 \uc791\ub3d9\ubc29\uc2dd\uc774 \uc77c\ub2e8 \ud074\ub798\uc2a4\ub97c @NoArgsConstructor \ub85c \uc0dd\uc131 \ud6c4, @Setter, @Getter \ub97c \uc774\uc6a9\ud574 \uac12\uc744 \ub9e4\ud551\ud558\uae30\uc5d0 \ub204\ub77d\ub418\uba74\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1539\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1539","post","type-post","status-publish","format-standard","hentry","category-spring-boot-2-1"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1539"}],"version-history":[{"count":3,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1539\/revisions"}],"predecessor-version":[{"id":1554,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1539\/revisions\/1554"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}