سؤال

بيئة تطبيقي:على شبكة الإنترنت، Spring MVC+Security، Hibernate، MySQL(InnoDB)

أنا أعمل على تطبيق قاعدة بيانات صغير يتم تشغيله من خلال واجهة الويب.هناك مستخدمين محددين ومعروفين يتعاملون مع البيانات المخزنة.أحتاج الآن إلى تتبع كل إجراء إنشاء/تحديث/حذف ينفذه المستخدم على قاعدة البيانات وإنتاج تقارير بسيطة "تشبه القائمة" من هذا.اعتبارًا من الآن، أفكر في جدول "السجل" (الأعمدة:معرف المستخدم + الطابع الزمني + الوصف وما إلى ذلك).أعتقد أنه يمكن إطلاق أحد الجوانب على أي عملية C(R)UD تقوم بإدراج صف سجل في هذا الجدول.لكنني لست متأكدًا من أن هذه هي الطريقة التي ينبغي أن يتم بها الأمر.

أنا أيضًا على دراية بسجلات MySQL المعتادة بالإضافة إلى log4j.أما بالنسبة لملفات السجل، فقد أحتاج إلى معلومات أكثر مما هو متاح لـ MySQL.قد يكون Log4j حلاً، لكنني لا أرى كيف يمكنه الكتابة إلى جداول MySQL.أود أيضًا الاحتفاظ ببعض الارتباطات في جدول السجل الخاص بي (على سبيل المثال:معرف المستخدم) للسماح لقاعدة البيانات بإجراء التصفية الأساسية وما إلى ذلك.التوجيهات على هذا واحد موضع تقدير.

ماذا تنصح؟هل يوجد أي دعم مدمج في Hibernate/Spring أم أن log4j هو الطريق الصحيح؟

شكرًا!

هل كانت مفيدة؟

المحلول

  1. Log4j معياري، يمكنك كتابة الواجهة الخلفية الخاصة بك والتي تكتب السجل في قاعدة البيانات إذا كنت ترغب في القيام بذلك؛في الواقع، حتى أنه يأتي مع مُلحق JDBC مباشرة خارج الصندوق، على الرغم من ملاحظة التحذير الأحمر الكبير هناك.
  2. بالنسبة لـ Hibernate، ربما يمكنك إنشاء شيء ما على اعتراضات وأحداث التي تقوم بتتبع جميع التعديلات وتسجيلها في جدول تدقيق خاص.

نصائح أخرى

هل بحثت في استخدام MappedSuperclass لتسجيل عملية C (R) UD؟

@MappedSuperclass
public class BaseEntity {
@Basic
@Temporal(TemporalType.TIMESTAMP)
public Date getLastUpdate() { ... }
public String getLastUpdater() { ... }
...
}

@Entity class Order extends BaseEntity {
@Id public Integer getId() { ... }
...
}

في حال كنت أذهب لتسجيل الحل وتبحث عن فعل ذلك بنفسك، حاول البحث عن JDBCAppender، انها ليست كاملة ولكن يجب أن تعمل.

في حال كنت تريد تشغيل المنتج الرف لتسجيل مركزي - النظر في محاولة logFaces - أنه يمكن أن يكتب مباشرة في قاعدة البيانات الخاصة بك (على الإفصاح : في أنا صاحب هذا المنتج.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top