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 پاسخ 388 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 505 بازدید
0 امتیاز
1 پاسخ 1.0هزار بازدید
+2 امتیاز
2 پاسخ 876 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 381 بازدید
0 امتیاز
2 پاسخ 900 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 394 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 875 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
0 پاسخ 2.8هزار بازدید
...