{"id":6272,"date":"2022-09-02T17:18:50","date_gmt":"2022-09-02T08:18:50","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6272"},"modified":"2024-10-30T13:45:16","modified_gmt":"2024-10-30T04:45:16","slug":"spring-boot-jpa-one-to-many-%eb%8b%a8%eb%b0%a9%ed%96%a5","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6272","title":{"rendered":"Spring Boot JPA one to many (\ub2e8\ubc29\ud5a5)"},"content":{"rendered":"<h1>Spring Boot JPA one to many (\ub2e8\ubc29\ud5a5)<\/h1>\n<p>\ud55c \uc0ac\ub78c\uc774 \ud578\ub4dc\ud3f0\uc744 \uc5ec\ub7ec\uac1c \uac00\uc9c0\uace0 \uc788\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4.<\/p>\n<p>\uc774 \uacbd\uc6b0, \ubc29\ud5a5\uc131\uc740 <code>\uc0ac\ub78c-&gt;\ud578\ub4dc\ud3f0<\/code> \uacfc \uac19\uc774 \ub2e8\ubc29\ud5a5(unidirectional)\uc774 \ub41c\ub2e4.<\/p>\n<p>\uc774 \uacbd\uc6b0 <code>@OneToMany<\/code> \ub97c \uc774\uc6a9\ud574 \uad00\uacc4\ub97c \uc124\uc815\ud574 \uc900\ub2e4.<\/p>\n<h2>\uc18d\uc131<\/h2>\n<p>@OneToMany \uc5d0\ub294 \uc544\ub798\uc640 \uac19\uc740 \uc18d\uc131\uc774 \uc788\ub2e4.<\/p>\n<h3>targetEntity<\/h3>\n<p>\uc774\ub984 \uadf8\ub300\ub85c \ub300\uc0c1 Entity \uc774\ub2e4.<\/p>\n<h3>cascade<\/h3>\n<p>\ud55c Entity \uc758 \ubcc0\uacbd\uc774 \ub2e4\ub978 Entity \uc5d0 \uc5b4\ub5bb\uac8c \ubc18\uc601\ud558\ub290\ub0d0\uc758 \ubc29\uc2dd\uc774\ub2e4.<\/p>\n<p>CascadeType\ub77c\ub294 enum\uc5d0 \uc815\uc758 \ub418\uc5b4 \uc788\uc73c\uba70,<br \/>\nALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH \ub4f1\uc774 \uc788\ub2e4.<\/p>\n<h3>fetch<\/h3>\n<p>\uad00\ub828 Entity \uc5d0 \ub300\ud55c \uc77d\uae30 \uc804\ub7b5\uc774\ub2e4.<\/p>\n<p>FetchType.EAGER : \uc989\uc2dc \uc77d\uae30<br \/>\nFetchType.LAZY : \uc9c0\uc5f0 \uc77d\uae30(\uc694\uccad\uc774 \uc788\uc744 \ub54c \uc77d\uae30)<\/p>\n<h3>mappedBy<\/h3>\n<p>\uc591\ubc29\ud5a5\uc77c\ub54c\ub9cc \uc0ac\uc6a9<\/p>\n<h3>orphanRemoval<\/h3>\n<p>DB \uc218\uc900\uc758 cascade<\/p>\n<h2>\uc608\uc81c<\/h2>\n<p><code>\uc0c1\ud488\uc815\ubcf4-&gt;\uc0c1\ud488\ucd94\uac00\uc774\ubbf8\uc9c0\uc815\ubcf4<\/code> \uc758 \ub2e8\ubc29\ud5a5 \uc5f0\uacb0 \uc0c1\ud0dc\uc785\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">@Entity\npublic class SrcItemEntity {\n    @Id\n    @Column(name = &quot;itemid&quot;, nullable = false)\n    private Integer id;\n\n    @OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL)\n    @JoinColumn(name=&quot;itemid&quot;)\n    private List&lt;SrcItemAddImageEntity&gt; addImage;\n\n    \/\/ ......\n}<\/code><\/pre>\n<p>\ud604\uc7ac Entity \uc758 <code>@Id<\/code> \uc640 SrcItemAddImageEntity \uc758 itemid \ud544\ub4dc\ub97c \uc5f0\uacb0\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">@Entity\npublic class SrcItemAddImageEntity {\n\n    @Id\n    @Column(name = &quot;idx&quot;, nullable = false)\n    private Integer id;\n\n    private Integer itemid;\n\n    \/\/ ......\n}<\/code><\/pre>\n<p>\uc704 \uc124\uc815\ub9cc\uc73c\ub85c \uad00\ub828 Entity \uac00 \uc77d\uc5b4\uc9d1\ub2c8\ub2e4.<\/p>\n<h2>\uc131\ub2a5\uc774\uc288??<\/h2>\n<p><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=9514\">https:\/\/www.skyer9.pe.kr\/wordpress\/?p=9514<\/a><\/p>\n<p>\uc704 \uae00\uc5d0\uc11c <code>@OneToMany<\/code> \uc124\uc815\ubc29\ubc95\uc744 \uc801\uc5b4\ub193\uc558\uc2b5\ub2c8\ub2e4.<br \/>\n\uc5b4\ub5bb\uac8c \ucf54\ub4dc\ub97c \uc791\uc131\ud574\uc57c \ud560\uc9c0 \ucc38\uace0\ud558\uc138\uc694.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring Boot JPA one to many (\ub2e8\ubc29\ud5a5) \ud55c \uc0ac\ub78c\uc774 \ud578\ub4dc\ud3f0\uc744 \uc5ec\ub7ec\uac1c \uac00\uc9c0\uace0 \uc788\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4. \uc774 \uacbd\uc6b0, \ubc29\ud5a5\uc131\uc740 \uc0ac\ub78c-&gt;\ud578\ub4dc\ud3f0 \uacfc \uac19\uc774 \ub2e8\ubc29\ud5a5(unidirectional)\uc774 \ub41c\ub2e4. \uc774 \uacbd\uc6b0 @OneToMany \ub97c \uc774\uc6a9\ud574 \uad00\uacc4\ub97c \uc124\uc815\ud574 \uc900\ub2e4. \uc18d\uc131 @OneToMany \uc5d0\ub294 \uc544\ub798\uc640 \uac19\uc740 \uc18d\uc131\uc774 \uc788\ub2e4. targetEntity \uc774\ub984 \uadf8\ub300\ub85c \ub300\uc0c1 Entity \uc774\ub2e4. cascade \ud55c Entity \uc758 \ubcc0\uacbd\uc774 \ub2e4\ub978 Entity \uc5d0 \uc5b4\ub5bb\uac8c \ubc18\uc601\ud558\ub290\ub0d0\uc758 \ubc29\uc2dd\uc774\ub2e4.\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6272\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-6272","post","type-post","status-publish","format-standard","hentry","category-spring-boot-2-5"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6272","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=6272"}],"version-history":[{"count":5,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6272\/revisions"}],"predecessor-version":[{"id":9518,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6272\/revisions\/9518"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}