dorm, “The Delphi ORM”, officially published at ITDevCon

As all the attendees have seen, at the last ITDevCon, I’ve officially published dorm as an OpenSource project.

dorm, The Delphi ORM
dorm, The Delphi ORM

You can find the project on google code: http://code.google.com/p/delphi-orm/

An introduction to dorm is available on google docs.

dorm begins as a my personal project more than one year ago, and now is sponsored by bitTime Software that offers custom development, consultancy, mentoring and so on.

Why dorm?

These are my personal reasons of because I’ve started to write dorm:
I WANT an ORM for Delphi… but:
I dont want (or I cant) change my database
I want persistence ignorance
I want to access to the «metal»
I want to persist PODO
I don’t hate SQL, but I know that 90% of it is boilerplate and errors prone

First example

Insert and retrieve object with dorm
Insert and retrieve object with dorm

 

You can persist anything you want.
bitTime actively use dorm, so it’s continuosly updated and evolved.

Repeat, you can find the project on google code and an introduction to dorm is available on google docs.

Let me know what do you think about.

Do you need an ORM like dorm in Delphi?

19 thoughts on “dorm, “The Delphi ORM”, officially published at ITDevCon

  1. Yes, Delphi need a good opensource framework. Unfortunately it is not that easy to build it. I am using Bold for Delphi every day since 6 years so it unavoidable to do a compare.
    2 features I like with Bold is OCL and transient derived attributes. Is that on the roadmap for Dorm ?

  2. Yes, Delphi need a good opensource framework. Unfortunately it is not that easy to build it. I am using Bold for Delphi every day since 6 years so it unavoidable to do a compare.
    2 features I like with Bold is OCL and transient derived attributes. Is that on the roadmap for Dorm ?

  3. I’ve downloaded it and found that it’s painfull to get it work under my configuration (XE1), is that due to extensive use of generics bleeding edge technics ?

    Too much compile time …

  4. I’ve downloaded it and found that it’s painfull to get it work under my configuration (XE1), is that due to extensive use of generics bleeding edge technics ?

    Too much compile time …

  5. I’ve downloaded the sources from the repository, looked at the samples and tried on my own code. But one thing that is not yet clear for me is about the session life-cycle and transaction management.
    1. Should I have a single TSession for the whole app, or should I use a new one everytime I want to touch the db?
    2. I’ve read somewhere (I think in another blog post of yours) that simply creating a new session implies a new transaction to begin. Is this the actual behaviour? Can it be changed?

  6. I’ve downloaded the sources from the repository, looked at the samples and tried on my own code. But one thing that is not yet clear for me is about the session life-cycle and transaction management.
    1. Should I have a single TSession for the whole app, or should I use a new one everytime I want to touch the db?
    2. I’ve read somewhere (I think in another blog post of yours) that simply creating a new session implies a new transaction to begin. Is this the actual behaviour? Can it be changed?

  7. I’m afraid, I must apply some update. Compilation always takes 2 steps :
    A first one which leads the IDE into a kind of unrecoverable state (abort).
    A lastone which amazingly complete it finally with success (Restart the IDE).

  8. I’m afraid, I must apply some update. Compilation always takes 2 steps :
    A first one which leads the IDE into a kind of unrecoverable state (abort).
    A lastone which amazingly complete it finally with success (Restart the IDE).

  9. @Magno Machado Paulo:
    1. TSession is more-or-less your connection to the data repository. So if you need to access your data during the whole application run time, then you need to create your session since the begining and destroy it at the finish
    2. Yes, this is the actual behavior. Do you need something different?

  10. @Magno Machado Paulo:
    1. TSession is more-or-less your connection to the data repository. So if you need to access your data during the whole application run time, then you need to create your session since the begining and destroy it at the finish
    2. Yes, this is the actual behavior. Do you need something different?

  11. Thank you, I was really beside the point and missing something.

    My exposure to ORM/OPF is not yet very extensive despite the fact that two years ago I come across materials written by Martin Fowler and Scott Ambler.

    It’s high time I brush them up.

  12. Thank you, I was really beside the point and missing something.

    My exposure to ORM/OPF is not yet very extensive despite the fact that two years ago I come across materials written by Martin Fowler and Scott Ambler.

    It’s high time I brush them up.

  13. I am VERY ipemrssed by your library. It should be bundled with Delphi – I can’t imaging coding without it now! One question: I’ve been having a lot of problems with debugging classes nested in generics due to QC bug 84930 (debugger crashes). Given that you have coded a complex library which includes nested generics I was just wondering if a) you have come across this bug and more importantly b) if you have found a work-around / patch for it?Life without a debugger is not fun!

  14. I am VERY ipemrssed by your library. It should be bundled with Delphi – I can’t imaging coding without it now! One question: I’ve been having a lot of problems with debugging classes nested in generics due to QC bug 84930 (debugger crashes). Given that you have coded a complex library which includes nested generics I was just wondering if a) you have come across this bug and more importantly b) if you have found a work-around / patch for it?Life without a debugger is not fun!

Comments are closed.