Aspect Oriented Audit Logging with Spring and Hibernate | Cagatay Civici's Weblog



Aspect Oriented Audit Logging with Spring and Hibernate | Cagatay Civici's Weblog

Audit logging is one of the important concerns in huge applications and usually treated as some kind of a non-functional requirement. I mean a software may work with or without an audit logging infrastructure, the thing is when it plays an important role in a software, design problems may likely to occur because it does not seem to be easy to change the design of the software to enable audit logging at first glance.

In our project, there is a layered architecture where spring is located at business/service layer and hibernate at DAO layer. At first this architecture was not designed considering stuff like audit logging or security. But the good news is that, since these are cross-cutting concerns, they can be easily integrated in an Aspect Oriented Way. Audit Logging could also be solved for simple systems using database triggers in an old school fashion but  I can't imagine how hard it could be to create and maintain it. Master Kenan created a high level base infrastructure to enable audit logging and I've worked on it for some time to make it ready for integration to our project modules.  The ingridients are the following;

* IAuditable: Marker interface which domain object must implement.
* AuditLogger: Spring bean to do the audit logging job.
* ServiceAuditLogInterceptor: Spring's MethodInterceptor that intercepts the calls to service beans.
* EntityAuditLogInterceptor: Hibernate's interceptor to intercept the transactions.
* Commons attributes: Attributes to define the audit log types for service methods. JAVA5 annotations should do the job too.
* AuditLogRecord: A persistent object to hold the audit logs. It has types like service_level_save, service_level_update, entity_level_save and etc.


Read full article from Aspect Oriented Audit Logging with Spring and Hibernate | Cagatay Civici's Weblog


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts