One would be forgiven if they mistook DataMgr for abandoned software. After all, I announced work on DataMgr 2.5 back in August of 2009 and come February (now March) of 2013 and still no official release of 2.5 and no word since DataMgr 2.5 Beta 3 was released more than a year ago. Well, that changes here.
Happy Ground Hog's Day! It looks like I have completely stopped releasing open source project lately. Hopefully I can get back on track.
More than a year after releasing DataMgr 2.5 Beta 2, I am finally releasing DataMgr 2.5 Beta 3. So, what took so long? Neglect, basically. I have just been busy with other things.
Even so, I think this is a very good release and should be a close match for the final release of version 2.5.
What a fun weekend! We got to celebrate my brother-in-law's birthday, I took my girl to a Christmas party, my kids turned 23 months old, and (more relevant to this blog) I finished the second beta of DataMgr 2.5.
So, what is new in DataMgr 2.5 Beta 2 (since Beta 1)?
- Optional "XmlData" argument to "init" method (calls "loadXml" automatically)
- Filters (and named filters) can now accept CF-style operators (like "GTE" for ">=") as well as SQL-style operators.
- Optional "truncate" argument to automatically truncate data to fit in database while saving data.
- Optional "fieldlist" argument to limit the data that can be changed while saving data.
- New methods to return SQL used internally: getSelectSQL, getFromSQL, getWhereSQL. This is very useful with CF_DMQuery.
- New "applyListRelations" method (take tablename,query) for post-calculation of list relations for getRecords() - also useful with CF_DMQuery
- For tables with a simple (single-field) primary keys, the ability to pass a single value into the "data" argument for getRecords() instead of a structure of values.
- New "isDeletable" calculated field available to "getRecords" determines if each record can be deleted based on "onDelete" property of relation fields.
- Verifications on record deletions now check deletes that DataMgr would cascade prior to deleting record.
- New "ftable" attribute (this deserves its own blog entry).
- Some small MS SQL specific improvements
- A few very minor bug fixes
Feel free to download DataMgr 2.5 Beta 2 (zip) or use the repository for the Bleeding Edge Release. For the latest full release, use the DataMgr RIAForge page. DataMgr is open source and free for any use.
Whenever I see any example saying "See how easy this is!?", I inevitably think "What happens when my needs differs a bit from the expected?". My worry is that I could start with a situation for which the tool is a good match and then things change a bit. Do I have to abandon the tool altogether in those cases? Basically, I always want to know how much elasticity any solution has.
More often than not, it seems, systems that are extremely efficient have very little elasticity (think of airline schedules where bad weather anywhere effects flight patterns everywhere). I think that the past several blog entries on Super-Easy CRUD/File Management have demonstrated that the com.sebtools package provides great efficiency for basic CRUD and file tasks. What it hasn't demonstrated (yet) is how elastic it is when the problem is more complicated than what com.sebtools is built to handle.
One of my favorite things about ColdFusion compared to other languages is the CFQUERY tag. It is just a real thing of beauty. I rarely use it any more, however, because I use DataMgr for my every day CRUD work (actually I use Manager.cfc, but that is another story). I rarely have to write any SQL code any more.
Rarely isn't the same as never, though. I have actually found a spectrum of cases for which I need to write custom SQL. First is the case where I need something more complicated than what DataMgr is built to handle and I don't need any of the functionality that DataMgr provides. In this case, I can easily move to using CFQUERY and I do so happily.
So I released the Alpha of DataMgr 2.5 more than a year ago. This is about as long as I have gone between a release. Why so long? Well, basically I have been neglecting DataMgr a bit to work on other things (more on that in another post). Also because DataMgr has been doing everything I want.
Finally, however, I have the first beta of DataMgr 2.5 ready.
DataMgr 126.96.36.199 Released
This may be the first release of DataMgr in which I have made no significant contribution myself. This is a small point release, but could actually have a big impact.
This release consists of a few small database-specific bug fixes from the 2.5 branch and two significant enhancements.
I happened to look at my RIAForge page yesterday and I saw that DataMgr has been downloaded 2,000 times. This doesn't actually encompass all of the downloads as the project had been around since before I put it on RIAForge, but it is still an exciting milestone.
This really inspires me to double my efforts on DataMgr 2.5.
I have been thinking this for some time, but it seemed like hubris (and flame bait) to say it. So be it - it needs to be said. I worry that ColdFusion ORM is being / will be marketed where it isn't appropriate.
What is Better?
It can't be helped, "better" is a word that only makes sense in the context of goals to be met. After all, it is impossible to tell if a sedan is better than a truck unless you know your goals. Do you need to get to work on low gas mileage or haul cargo? I will use the criteria that Adobe ColdFusion engineer, Rupesh Kumar, has laid out in "ColdFusion ORM - An Evolution in building datacentric application":
One of the new features in the upcoming DataMgr 2.5 release that I am really excited about is the ability to extend DataMgr to add or modify its functionality to your liking. This is a feature that John Farrar really had to push me into. Now that I finally see the light, however, I am really excited about the possibilities.