Introduction to ORM
The recent years marked the success of client server applications, either web based or classical, usually made of a database at the backend, some form based interface at the front end, and some business components in between, circulating and processing the data. Applications tend to effectively divide into 3 separated layers, usually named the Presentation Layer (PL), the Business Layer Logic (BLL) and the Data Access Layer (DAL).
Those who experienced so-called third-tiers programing know the importance of being able to find a clever way to quickly generate the common parts, and keep the hard work for what actually makes the sofware specific.
One of the first steps in building an application usually consist in defining the business domain within the physical data model implemented into the database.
Modern data driven approaches consist in deriving the most of the actual database, to bring the data objects close to bind to the forms control.
Several methodologies serve that objective. Object Relational Mapping is one of them.
ORM softwares automatize the generation of a programatic data access layer by mapping the elements of the database (tables, columns...) into related object classes, providing the developper with a transport and processing mechanism.
LLBLGen Pro
Pioneering the field of ORM in .Net technology, Frans Bouma, a long time expert in data acces technologie from Holland and Microsoft Most valuable Programer, commercializes with his company Solution Design a suite that stands, together with the OpenSource NHibernate, for the best ORM software available in .Net technology, LLBLGen Pro.
Unlike its XML driven rival, LLBLGen features endorse a Data oriented philosophy, deriving most classes from the schema extracted, and provides the user with a rich framework for dynamic query generation.
Its power include the ability to implement a complex grammar and many database specificities.
Architecture
The following diagram summarizes the interactions of the different parts that makes LLBLGen Pro.
