4me

If the planet was going to break up–all right. But while I was alive I would go on living at the best speed I could manage. – “Future Imperfect”

Hibernate v.s. Active Record

Posted by tcle on November 2, 2008

Overview

Active Record – adopted by Rails framework is reckoned to be a tough player in single table/object mind set. In short, it is a way to map database rows to objects so every columns then become properties of the objects. Static methods are available for finding instances. There are also methods that provides CRUD functions for you. You might find it nearly like 1:1 correspondent mapping between tables and classes, columns and fields.

Hibernate utilize the Data Mapper pattern which use a mapping layer to moves data between objects and database independently. It requires you to have hands-on job in configuring how these moves is done vie a XML file. The file is responsible for telling how objects and rows, columns and fields are mapped.

Active Record support native SQL while Hibernate make up its own object oriented Hibernate Query Language – HQL which will later be translate into SQL with optimization for the specific database. The intention for a new query language is a serious move and its worth in case of complex queries. Either one will not a big different to developers. Just dig into each and you find yourself comfortable.

IMHO

Hibernate and Active Record do the mapping in its own way. By some magical reflection, Active Record implicitly do the job for you. Just to make sure using it for simple domain models. Hibernate in the other hand explicitly require your efforts in mimicking the objects and database similarly in terms of columns to fields and associations.

Some people might argue on the native of Active Record as a data centric way because Active Record classes  expose the data every from the database (e.g. every object fields is related to columns from database rows). I think it is not a big concern to bring up front because AR is doing good on what its meant to do. Hibernate in conclusion will be good choice for relational database or an existing legacy database schema case.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: