Halo teman2,
saya ada beberapa pertanyaan mengenai audit trails:
1. Lebih baik kita melakukan audit trail di level service
(aspecJ / spring aop) / level dao (hibernate interceptor), atau
bahkan memakai trigger DB ya? dari beberapa artikel yang saya baca, banyak yg rekomen di level service. Tp mungkin temen2 disinin pengalaman untuk hal ini?
2. utk skrg, sy lagi coba di level service pake aspectJ. Bagaimana cara memakai aspectJ dengan bener ya? sebelum insert/update setiap data, sy ingin menambahkan informasi audit trail seperti createDate, createBy, updateDate, updateBy, dll.
@AfterReturning("@annotation(auditTrails) && args(model,..)")
public void audit(AuditTrails auditTrails, Model model) {
//jika auditTrails == update --> setUpdateDate & setUpdateBy
//jika auditTrails == create --> setCreateDate & setCreateBy
}
@AuditTrails(className = User.class, actionType = AuditTrailsActionType.CREATE)
public void add(User user){
dao.insert(user);
}
Anotasi yang seharusnya dipakai apa ya? karena klo saya pake @AfterReturning, semua data auditTrail kosong.
Asumsi saya, data sudah di insert terlebih dahulu, baru audit trail dijalankan.
Saya coba menjadi @Before, createDate & createBy sudah terisi dengan baik. Hanya saja, jika sy melakukan update, ke dua ata ini menjadi null, dan updateDate, updateBy. Seharusnya, jika update field createDate & createBy tidak hilang.
Asumsi sy untuk kasus ini, pas proses create, model yang dilempar itu 'baru dibuat'. begitu jg untuk proses update.
Dan jika sy coba @After, sama seperti @AfterReturning.
Mungkin ada saran dari temen2 untuk melakukan hal ini dengan baik?
Mohon bantuan nya ;)
Thanks,
E