0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

آیا چیزی شبیه به Trigger در JPA وجود دارد که مثلا در صورت تغییر در یک Entity قبل با بعد از آن تغییر اجرا شود؟

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

در JPA مفهومی با نام JPA Lifecycle Event یا Entity listener وجود دارد که دقیقا همین کار را انجام می دهد. می توانید با استفاده از annotation های مخصوص JPA این کار را انجام دهید، هم می توانید در خود کلاس Entity این کار را انجام دهید:

@Entity
public static class MyEntityWithCallbacks {
    @PrePersist void onPrePersist() {}
    @PostPersist void onPostPersist() {}
    @PostLoad void onPostLoad() {}
    @PreUpdate void onPreUpdate() {}
    @PostUpdate void onPostUpdate() {}
    @PreRemove void onPreRemove() {}
    @PostRemove void onPostRemove() {}
}

و هم در خارج از کلاس Entity و در یک کلاس Listener:

public class MyListener {
    @PrePersist void onPrePersist(Object o) {}
    @PostPersist void onPostPersist(Object o) {}
    @PostLoad void onPostLoad(Object o) {}
    @PreUpdate void onPreUpdate(Object o) {}
    @PostUpdate void onPostUpdate(Object o) {}
    @PreRemove void onPreRemove(Object o) {}
    @PostRemove void onPostRemove(Object o) {}
}

و سپس استفاده از آن Listener:

@Entity @EntityListeners(MyListener.class)
public class MyEntityWithListener {
}
قبل توسط (4 امتیاز)
آهان درسته... چیزی الان سرچ کردم به این میرسه... که مثلاً همچین کاری بکنم...
https://docs.oracle.com/database/122/JJDEV/calling-Java-from-database-triggers.htm
نظرتون چیه؟ راه حل خود شما چیه؟
قبل توسط (1.1هزار امتیاز)
این راه حل های خاص یک dbms هست. من ترجیهم اینه بیزینس سمت دیتابیس نره ولی اگر چاره ای ندارید راه خوبیه.

سوالات مشابه

0 امتیاز
1 پاسخ 264 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 396 بازدید
0 امتیاز
1 پاسخ 883 بازدید
+2 امتیاز
2 پاسخ 569 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 276 بازدید
0 امتیاز
2 پاسخ 599 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 890 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 289 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 683 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
0 پاسخ 930 بازدید
...