{"id":6946,"date":"2022-11-06T17:17:18","date_gmt":"2022-11-06T08:17:18","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6946"},"modified":"2022-11-18T15:38:54","modified_gmt":"2022-11-18T06:38:54","slug":"jpa-entity-%eb%b3%80%eb%8f%99-%ea%b0%90%ec%a7%80%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6946","title":{"rendered":"JPA Entity \ubcc0\ub3d9(\ubcc0\uacbd) \uac10\uc9c0\ud558\uae30"},"content":{"rendered":"<h1>JPA Entity \ubcc0\ub3d9(\ubcc0\uacbd) \uac10\uc9c0\ud558\uae30<\/h1>\n<p>Entity \uc758 \ubcc0\ub3d9\uc744 \uac10\uc9c0\ud558\uc5ec \ucd94\uac00\uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>DB \uc791\uc5c5\uc774 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0 \ub300\ud574 Event \ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<h2>\ud568\uc218\ucd94\uac00<\/h2>\n<pre><code class=\"language-java\">@Entity\npublic class IpgoMaster {\n\n    @PostPersist\n    void postPersist() {\n        System.out.println(&quot;after insert&quot;);\n    }\n\n    @PostLoad\n    void postLoad() {\n        System.out.println(&quot;after select&quot;);\n    }\n\n    @PostUpdate\n    void postUpdate() {\n        System.out.println(&quot;after update&quot;);\n    }\n}<\/code><\/pre>\n<h2>Listener \ubd84\ub9ac<\/h2>\n<pre><code class=\"language-java\">public class IpgoMasterEntityListener {\n\n    @PostLoad\n    void postLoad(Object o) {\n        if (o instanceof IpgoMaster) {\n            System.out.println(&quot;11111 PostLoad&quot; + ((IpgoMaster) o).getIpgoDate());\n        }\n    }\n\n    @PostUpdate\n    void postUpdate(Object o) {\n        if (o instanceof IpgoMaster) {\n            System.out.println(&quot;11111 PostUpdate&quot; + ((IpgoMaster) o).getIpgoDate());\n        }\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Entity\n@EntityListeners(value = {IpgoMasterEntityListener.class})\npublic class IpgoMaster extends BaseTimeEntity implements Persistable&lt;Long&gt; {\n\n}<\/code><\/pre>\n<h2>Event \ubc1c\uc0dd<\/h2>\n<p>Listener \uc5d0\uc11c \ubc14\ub85c DB \ub97c \ud638\ucd9c\ud558\uba74 \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<br \/>\n<a href=\"https:\/\/kimchanjung.github.io\/programming\/2020\/06\/28\/spring-jpa-antity-listner-autowired-not-working\/\">\ucc38\uc870<\/a><\/p>\n<pre><code class=\"language-java\">public class IpgoMasterEntityEvent extends ApplicationEvent {\n\n    private final IpgoMaster ipgoMaster;\n\n    public IpgoMasterEntityEvent(IpgoMaster ipgoMaster) {\n        super(ipgoMaster);\n        this.ipgoMaster = ipgoMaster;\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Component\n@NoArgsConstructor\npublic class IpgoMasterEntityListener {\n\n    private ApplicationEventPublisher publisher;\n\n    @Autowired\n    public IpgoMasterEntityListener(ApplicationEventPublisher publisher) {\n        this.publisher = publisher;\n    }\n\n    @PostLoad\n    void postLoad(IpgoMaster o) {\n        if (o != null) {\n            o.getHistory().setHistory(o);\n        }\n    }\n\n    @PostUpdate\n    void postUpdate(IpgoMaster o) {\n        if (o != null) {\n            publisher.publishEvent(new IpgoMasterEntityEvent(o));\n        }\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Component\n@RequiredArgsConstructor\npublic class IpgoMasterEntityEventHandler {\n\n    private final IpgoDetailService service;\n\n    @EventListener\n    public void handle(IpgoMasterEntityEvent event) {\n        service.undelete(0L);\n        System.out.println(&quot;ok&quot;);\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>JPA Entity \ubcc0\ub3d9(\ubcc0\uacbd) \uac10\uc9c0\ud558\uae30 Entity \uc758 \ubcc0\ub3d9\uc744 \uac10\uc9c0\ud558\uc5ec \ucd94\uac00\uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. DB \uc791\uc5c5\uc774 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0 \ub300\ud574 Event \ub97c \ubc1c\uc0dd\uc2dc\ud0a4\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4. \ud568\uc218\ucd94\uac00 @Entity public class IpgoMaster { @PostPersist void postPersist() { System.out.println(&quot;after insert&quot;); } @PostLoad void postLoad() { System.out.println(&quot;after select&quot;); } @PostUpdate void postUpdate() { System.out.println(&quot;after update&quot;); } } Listener \ubd84\ub9ac public class IpgoMasterEntityListener\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=6946\">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-6946","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\/6946","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=6946"}],"version-history":[{"count":8,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6946\/revisions"}],"predecessor-version":[{"id":7036,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/6946\/revisions\/7036"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}