Hibernate and database triggers

Apart from being required for legal and regulatory reasons, audit logging is a very important feature of every good-quality information system. Initially, it always seems like a simple thing to do but, as the projects grow larger, audit logging often becomes an encumbrance for the software developers.

When it comes to the Spring/Hibernate-based applications, there are several solutions considered to be the best practices – Hibernate Interceptor Approach, Envers, database triggers, etc.

While working on a recent project for our major client, we had to review auditing approach in order to improve performance of some critical functionalities and to achieve requested SLA. After evaluating possible solutions and deliberating between the performance impact and ease of implementation, the decision was made to put the audit logging logic into the database triggers. The basic idea is – when a record in the target table is updated or inserted, the appropriate database triggers write necessary auditing information into separate audit tables.

Continue reading “Hibernate and database triggers”

ATG Retirement Project – Introduction

Two years ago, one of our biggest clients made a strategic decision to move their main code base from ATG to an open source platform, specifically Spring/Hibernate. This code base encompasses a number of portals addressing the needs of different types of constituents (Member, Provider, Producer and Employer).

Some of the elements of the project schedule were dictated by the fact that the key technology components used on the portals have been reaching the end-of-life (e.g. IBM WAS 6.0, ATG Relational Views, etc.). That is why the project was implemented in two phases – the Phase I focusing on the data layer and the technology update, and the Phase II focusing on removing the rest of the ATG framework including the migration of the front-end code base.

Continue reading “ATG Retirement Project – Introduction”