The influence of optimisations on the performance of an object relational mapping tool

Object Relational Mapping (ORM or also known as O-R) tools provide a mapping between the object model and the relational model, acting as an intermediary between an object oriented code base, and a relational database. Over the last few years the use of object relational mapping tools have grown. Today their exist many ORM tools for programming languages, like C++ (LiteSQL), Java (Hibernate, Apache OJB), Python (SQLAlchemy), Ruby, PHP, .Net (iBATIS) and Perl to name a few. ORM tools provide an extra layer between the business logic layer and the data layer. It is important that this layer is not a bottleneck. The aim of the study was to investigate the influence of this extra layer against the use of object databases that remove the need for this extra mapping layer. During this investigation the impact of certain optimisation techniques on performance was investigated. In this paper we only report on how vendor-recommended optimisation techniques influenced the performance of Hibernate. The OO7 benchmark, tailored to investigate Java based object persistence, was used to create a database; to traverse it; to query it; and to delete and update data. An initial experiment used "out of the box" Hibernate settings with regard to the use of indexes, lazy and eager loading, and caching. The times taken were submitted to Hibernate for comment. The experiment was then re-run, using optimised settings as recommended by the vendor. The extent of improvement is reported.