Thomas Jaeger

Creating Great Software

dVP 2008 Award

I’ve just been notified that I have been selected as a db4o Most Valued Professional (dVP) awardee for the year 2008. I’m honored and proud to receive this recognition. I want to thank db4o and the db4o community and I’m looking forward to an even stronger db4o, and Object Persistence in general, acceptance in small and large companies worldwide.

August 15, 2007 Posted by Thomas Jaeger | .NET, db4o | | 2 Comments

Object Persistence Presenation in Charlotte, NC – Slides and Code

I had a blast presenting Object Persistence at the Enterprise Developers Guild tonight. I hope everyone (or at least some) enjoyed the sugar bus with the peanut M & M’s :-)

As promised here are the slides and source code of the presentation. I was not able to touch on some areas as I did have a lot if information packed into a little over an hour. I’m glad though that some people got to start thinking “hmmm, I can do away with the SQL code?” :-)

Let me know your feedback so that I can improve my presentations for next time.

You can download the slides and the source code here.

April 24, 2007 Posted by Thomas Jaeger | .NET | | 2 Comments

Object Persistence Presentation in Charlotte, NC

I will be presenting at the next Enterprise Developers Guild meeting in Charlotte, NC on April 24th, 2007 at 6:00 pm at the CPCC Central Campus. You can find more details here. I’ll be presenting about Object Persistence. I’ll be showing why you need to worry about Object Persistence and why this is an important part of any modern software architecture. I’ll be using the object database db4o in a demo that shows multiple, logical layers, several design patterns such as Model View Presenter, Facade, Singleton etc. Although simple, I’ll have a fully functional Windows application that can manage patients. I’ll be using Test Driven Development to hammer out the design using unit tests from scratch.

So, come join me and watch those objects having fun. Watch out for the sugar bus! Come to find out.

04-13-2007, UPDATE: I’ll make the slides and source code available shortly after the presentation.

April 11, 2007 Posted by Thomas Jaeger | .NET | | 7 Comments

db4o – Object Database for .Net

I have been using db4o (database for objects) for .Net for about a year and a half, and I have to tell you that you are doing yourself a disservice if you have not tried it, yet. It’s open source and it will save you tons of time. I will go into more detail in my upcoming book about Object Persistence including examples, but, db4o is one way to persist objects and that is by using an object database instead of a relational database.

If you have never used an object database before, think of it like this: you are already using .Net so you are already using objects. What you probably are not doing is using objects all the way to saving your “data”. At some point you have been messing with ugly SQL statements and maybe “mapping” objects or using a mapping layer. You may be using a “data layer” etc. All hog-wash!

db4o can save you about 50% of your development time. And that is a conservative estimate. I’ll be posting more including code in the upcoming months. Stay tuned.

January 1, 2007 Posted by Thomas Jaeger | .NET, Blogroll | | No Comments Yet

Object Persistence

It’s been an awfully long time since my last post. I will try to update it more often with more fresh content and what’s hot in the .Net world. I have moved from South Florida to my new job in Charlotte, NC. So, we’ve been pretty busy getting settled in etc.

I’m currently working on several things including a book about Object Persistence. Object Persistence is such an important factor in an architecture. It amazes me how little attention it gets. Anyways, I have a lot of good experiences and knowledge that I want to share in my book.

Happy New Year!

December 31, 2006 Posted by Thomas Jaeger | .NET, Blogroll | | No Comments Yet

Creating Data Transfer Objects – Part 2

I have updated the console application DTO to version 2.0 to use attributes now to decorate the domain classes for code generation. This offers much better control of which domain classes should be used to create the Data Transfer Object classes. In addition, you can also decorate generate public properties that use domain classes as a return value.  

For example, if you decorate the following sample domain classes below with the DTO attribute like so 


using DTOAttributes;
namespace Example
{   
   [DTOAttributes.DTO]   
   public enum CustomerType   
   {       
      Regular,       
      Special   
   } 
   [DTOAttributes.DTO]
   public class Customer
   {

The DTO console app will generate the following code:

public enum CustomerTypeDTO      
{             
   Regular,             
   Special,      

public class CustomerDTO      
{             
   private List<EmailAddressDTO> _emails;
   [XmlElement(IsNullable = true)]
   public List<EmailAddressDTO> Emails
   {                    
      get { return _emails; }
      set { _emails = value; }
   } 

   private CustomerTypeDTO _type;
   [XmlElement(IsNullable = true)]
   public CustomerTypeDTO Type
   {                    
      get { return _type; }
      set { _type = value; }
   }

As you can see, it works pretty well. I’ve included the source code including the sample app. I’ve not update the CodeSmith template, yet as the console app is doing a fine job for me. For now. In my current project, this allows me to generate over 15,000 lines of code to create dozens of DTO classes automatically. Sweet! Enjoy!

You can download the new version here.

July 26, 2006 Posted by Thomas Jaeger | .NET | | No Comments Yet

Creating Data Transfer Objects (DTO) with CodeSmith

I’ve created a template for CodeSmith to create Data Transfer Objects automatically by simply supplying the path and file to your domain model assembly file. This assembly should have all your business objects included. The template does the rest. I only spent two days on this but it works for the most part including generics. It basically uses reflection to create a DTO version of each business class.

 I was going to extend it by using Attributes to decorate class names as well as properties for your domain model; but, found that this current version fits my need at the moment.

Feel free to extend and enhance it. Let me know if you create a new version so that I can enjoy that as well. :-)

You can download the file here.

UPDATE 07-15-2006: I have updated the template to support Enums. I also created a console app so that you can call this during your build process.

July 14, 2006 Posted by Thomas Jaeger | .NET | | 8 Comments

Hello world!

Welcome to my blog, finally. For those who don’t know me, my name is Thomas Jaeger and I will be posting about software development and architecture as a whole using .Net and the latest tools and automation processes to make life easier.

One of my talents is being able to motivate and inspire other programmers to create the next great thing. Many programmers do not relies that they posses a gift. A gift to create, to build something from nothing. The urge to create is what many programmers love.

Anyways, as time permits I will write more about my experiences and thoughts. Enjoy!

July 14, 2006 Posted by Thomas Jaeger | Uncategorized | | No Comments Yet