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 امتیاز)
ببخشید یه سوال.. این روش وقتی کار میکنه که کل عملیات مربوط به دیتابیس در داخل خود هایبرنت اتفاق بیوفته...
اما اگر مثلاً از یه زبان دیگه و با یه فرم ورک دیگه ای داده به جدول دیتابیس اضافه بشه چطور میشه تشخیصش داده؟
قبل توسط (1.1هزار امتیاز)
نه اون موقع این روش جواب نمیده و باید از مکانیزم های خود dbms مثل تریگر استفاده کنید.
قبل توسط (4 امتیاز)
آهان درسته... چیزی الان سرچ کردم به این میرسه... که مثلاً همچین کاری بکنم...
https://docs.oracle.com/database/122/JJDEV/calling-Java-from-database-triggers.htm
نظرتون چیه؟ راه حل خود شما چیه؟
قبل توسط (1.1هزار امتیاز)
این راه حل های خاص یک dbms هست. من ترجیهم اینه بیزینس سمت دیتابیس نره ولی اگر چاره ای ندارید راه خوبیه.

سوالات مشابه

0 امتیاز
1 پاسخ 378 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 500 بازدید
0 امتیاز
1 پاسخ 1.0هزار بازدید
+2 امتیاز
2 پاسخ 866 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
0 امتیاز
1 پاسخ 376 بازدید
0 امتیاز
2 پاسخ 891 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 1.1هزار بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط masoud shahhosseini_ (45 امتیاز)
+1 امتیاز
1 پاسخ 390 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
3 پاسخ 865 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط یوری (426 امتیاز)
0 امتیاز
0 پاسخ 2.8هزار بازدید
...