AdFactum ObjectMapper .NET Blog

Official blog of the AdFactum ObjectMapper .NET

Archive for the 'Miscellaneous' Category

Public Holiday Toolkit v1.0

Posted by Gerhard Stephan on 2nd November 2007

Today the Public Holiday Toolkit v1.0 has been published. The Toolkit enables the developer to show public holidays for several countries within .NET applications. So why do I post it here? Because the Public Holiday Toolkit is based on the AdFactum ObjectMapper .NET. That makes it to a perfect example for how to use the XML Persister. Furthermore the model can be perfectly adapted into your own entity model, in order to store the holiday definitions into a real database, instead of using an XML file.

So have fun with it.

– Gerhard

Here’s the URL: Public Holiday Toolkit v1.0

Posted in Miscellaneous | No Comments »

Publication in the magazin

Posted by Gerhard Stephan on 13th September 2007

The magazin published an article about the AdFactum ObjectMapper .NET in their current 10/2007 issue.

October 2007 issue of the magazin

This time I wrote the article by my own – so I can’t say thanks to someone 😉
My concern of this article was to bring some light into the dark that surrounds the ORM.

Hope that you’ll have a look at the article and provide me with some feedback.

Wish you a nice week 

– Gerhard

Posted in Miscellaneous | No Comments »

New Project-Team License Model

Posted by Gerhard Stephan on 17th August 2007

Today we start offering our new project team license model.

If you’re working in a development team you won’t need to buy every single developer a license for the AdFactum ObjectMapper .NET. Since today it’s sufficient to buy one team license. It doesn’t matter how many members are within your team. That reduces the costs of the software license for the AdFactum ObjectMapper .NET significant.

Remember: The AdFactum ObjectMapper .NET is not free at all. It’s only free if you’re publishing your product under the GPL License. If not, you have to register yourself at our registration website and buy a valid license. When buying our products, you will receive a printed product certificate as a proof of your ownership.

Hope to welcome you as a new registered customer.

Best regards
Gerhard Stephan

Posted in Miscellaneous | No Comments »

AdFactum ObjectMapper .NET Forum launched

Posted by Gerhard Stephan on 24th April 2007

Today the AdFactum ObjectMapper .NET Forum has been launched. The forum shall be an open discussion board for all issues regarding the AdFactum ObjectMapper .NET.

Please don’t hesitate to register yourself within the forum. The more people are getting involved in the forum, the better the AdFactum ObjectMapper .NET becomes.

So visit the forum at:

– Gerhard

Posted in Miscellaneous | No Comments »

3rd Place for the ObjectMapper .NET

Posted by Gerhard Stephan on 19th April 2007

Readers Choice 2007The readers of the magazine are the conceivably best jury for the evaluation of development products. The magazine nominated in twelve categories over 100 products!

That’s why I’m really proud to say that the ObjectMapper .NET has been voted for the 3rd Place within the category O/R Mapping Tools.


Bester O/R Mapper
1. Platz: DataObjects.NET (25,6 %)
2. Platz: NHibernate (14 %)
3. Platz: ObjectMapper .NET (13,7 %)


The ObjectMapper .NET project started last year, so I think it’s a very good 3rd place for such a short time. But I won’t rest on that position. The ObjectMapper .NET project will grow and I’m looking forward to the next readers survey in that the ObjectMapper .NET hopefully achieve the 1st place.


Web Link: Reader’s Choice 2007

Posted in Miscellaneous | 1 Comment »

Registered Trademark

Posted by Gerhard Stephan on 29th January 2007

After one failed attempt, I’m proud to say that the "AdFactum ObjectMapper .NET" has now be approved as a registered trademark of the Federal Republic of Germany. The certificate was send to me few days ago.

The one failed attempt was because I could not register "ObjectMapper .NET" as a standalone trademark. It was to global to register, because it would hinder competing companies to merchandise any object mapping tool.

But now it’s accomplished.

So have a nice week


Posted in Miscellaneous | No Comments »

Publication in the dotNetPro magazin

Posted by Gerhard Stephan on 19th December 2006

Today the dotNetPro magazin published an article about the AdFactum ObjectMapper .NET in their current january 2007 issue.

January 2007 issue of the dotNetPro magazin

I want to say thank you to Christian Liensberger who wrote that article. Furthermore thanks to all developers who helped me to improve the ObjectMapper .NET.

The development of the ObjectMapper .NET has just gathered way up. So stay tuned.

Hope you enjoy reading the dotNetPro.


Posted in Miscellaneous | No Comments »

Background: The ObjectMapper .NET

Posted by Gerhard Stephan on 13th October 2006

Reason to start the ObjectMapper .NET project

In 2003 I had the opportunity to work in a Java project which used Hibernate 1.25 and later 2.0. I was responsible for developing the business logic and parts of the data access layer.

The application had been developed following the good old MVC model. Whereas the presentation framework was using Struts and Tomcat, the business logic has been developed using Java Beans and JBoss. Oracle has been used as the database management system. Note that Tomcat and JBoss had been running on different machines  to get better scalability.

The idea behind  the then young Hibernate Framework fascinated me.  But actually using it quickly showed the pitfalls.

This is a list of my concerns:

• It took quite some work to get the first database access up and running. It started with migrating the class model to the HBM-XML file and then to the database model. Because everything was maintained separately, keeping these things consistent took quite some effort and was a constant source of errors. Even the use of XDoclet could not significantly simplify this.

• The transport of entity objects from business logic (BL) to user interface (UI) and back required these entities to be serializable (because of the machine hop). Saving those objects a second time, Hibernate tried to insert the object again, thus producing duplicates or constraint violations.

After an extensive search we realized that Hibernate used the object reference to identify whether the object had to be inserted or updated. However those references had changed due to the serialization..

• In order to limit the amount of database calls, we decided early on to use the propagated Lazy Loading functionality. Development on a single machine worked fine, but after distributing business logic (JBoss), oracle database, and user interface (Tomcat) on separate machines nothing worked anymore. Why?

Because of the Lazy Loading mechanism the UI tried to connect to the database to load missing entities. This inevitably failed because the UI did not (and should not) have access to any database for security reasons.

• After dismissing Lazy Loading, Hibernate only offered the possibility to load entities in the whole (i.e. including all object dependencies). Because we didn’t want to load the complete database in memory, we had to flatten our object model. Therefore we removed aggregated objects and stored the foreign keys instead. This lead O/R Mapping with Hibernate ad absurdum.

I’m sure that Hibernate has evolved since that time. But  at that time those issues formed my impression of Hibernate and created the wish to develop a new O/R Mapping Framework that prevents the pitfalls mentioned above.

However since the java project I was involved in  depended heavily on Hibernate, it would have cost too much effort to replace it with another O/R Mapping Framework. At the same time I got interested in C# .NET. Consequently I decided to write my new O/R Mapping Framework for C# .NET.

This was the beginning of the ObjectMapper .NET (or rather DatabaseMapper, which was its name at that time). The development started in the middle of 2003.

The development 2003 to 2005

In the years 2003 to 2005 the DatabaseMapper had been a private project in which I tried to do everything right, which was not always possible. But over time and after some twists and turns the result was presentable.

The following demands have been important for me and I still check the ObjectMapper .NET for this points.

1. The O/R Mapping Framework should simplify and speed up the development, so that first results can be shown rather quickly. That includes the support of the MDA paradigm.

2. The O/R Mapping Framework should be usable with stand alone applications just as well as with distributed applications under high load.

3. The O/R Mapping Framework should work transparently to the user. The developer should not have to care too much about database relations and foreign keys. The OO paradigm should be supported as best as possible.

The first versions of the DatabaseMapper have been used professionally in the time recording tool TimePunch v1.82.

The breakthrough 2005

In 2005 I had the chance to join a project at Commerzbank AG Frankfurt. A new CRM System had to be developed to displace the old CRM System.

The decision to use object based data access rather than ADO.NET datasets was already made. Consequently the question came up which O/R Mapping Framework to use.

After some discussions about the pros and cons of the respective products, performance tests, etc., the project leader could be convinced to use the DatabaseMapper as the O/R Mapping Framework.

I should emphasise that this has not been my decision alone. Within the team the DatabaseMapper, had been compared with the quasi standard NHibernate. The crucial factors for choosing the DatabaseMapper in favour of NHibernate have been:

1. The already described problem of NHibernate to directly access the database from the UI, without using the business logic.

2. The fact that NHibernate forces the developer to use its provided collection classes rather than allowing the usage of self defined container implementations.

3. Some other disadvantegous features, e.g. the partly redundant, but in all cases separated (and therefore error prone and maintenance intensive) configuration of NHibernate.

All in all these were the very issues that triggered the development of the DatabaseMapper in the first place.

Of course, this was a big step forward, because the DatabaseMapper now had to prove its qualities in a major project in one of the biggest German banks.

Up to this day it has been one big success story. The project ISIS is already productive and version 2.0 will be released by the end of 2006. And until today it benefits from the O/R Mapping Framework I developed. Currently the project uses more than 200 tables and several gigabytes of data. 

The first “official” Release

Since the first attempts had worked very well and the DatabaseMapper became even more stable and at the same time supported more features in later versions, I decided to publish the DatabaseMapper under the new name “ObjectMapper .NET” as an open source project.

The decision for an open source project was driven by the wish of getting public attention and a broader user base as fast as possible.

The 1st Jan 2006 became the birthday of the ObjectMapper .NET. At this day I announced the project in SourceForge under the GPL License and published the first “official” release.

I published the ObjectMapper .NET under the GPL License, hoping that this is the best balance between the wish to make the O/R Mapping Framework accessible to a huge community and at the same time earning money by selling commercial licenses. Therefore the ObjectMapper .NET will be marketed with dual license.


Right now I would like to thank all people who supported the development of the ObjectMapper .NET in one way or the other.  Special mention should be given to those two guys:

Karl Reitschuster: As an accounted expert for Oracle he helped me to optimize the output of the OraclePersister used by the ObjectMapper .NET. Furthermore Karl Reitschuster developed a PL SQL AddOn that works as a garbage collector. E.g. The AddOn handles deferred deletions if the object is still referenced by other entities. For more information on this topic please contact Karl Reitschuster directly.

Alexander Jung:  With his hints and insights regarding performance optimization, Alexander Jung played his part in making the ObjectMapper .NET outperform other O/R Mapping Frameworks. Furthermore he reviewed the web pages for spelling and grammar and helped  putting the finishing touches to the ObjectMapper .NET

A look into the future

Predicting what will happen to the ObjectMapper .NET isn’t that easy. The development has been/will be largely driven by the demands and feedback of the people using the ObjectMapper .NET within their projects.

The big challenge will be the integration of LINQ into the ObjectMapper .NET. It is not conceivable yet whether the ObjectMapper .NET should work as a data source for LINQ or whether it should use LINQ as a query source.

Furthermore the support of additional data sources beside Oracle, SQL Server, or Microsoft Access Database rises up on the wish list. The support of MySQL is definitely planned for the nearer future.

But this is for sure: The ObjectMapper .NET will stick to its principles to simplify the work of the developers.

Posted in Miscellaneous | 2 Comments »