Products



Stay in touch

Add your e-mail address here to receive the monthly TMS Software alerts.


    

Content:
Product releases
Product articles
Technical articles
Website changes
Software development

Products:

<< >>
January 2015



Friday, November 18, 2011

What is TMS Aurelius?

I've been working with Delphi and databases for years already (actually I'm this close to say "for "decades" - in plural).
In database programming we all typically do the same: create SQL statements, execute it in the database and retrieve results back, using a TDataset descendant object which we use to iterate through data.
I guess that just like most of you who work regularly with databases, we've all used or written at some point small, medium-size "frameworks" to make these tasks a little more simple. Functions that build the SQL statement automatically based on some parameters, client datasets that build update statements, data dictionaries, etc.. In the past months though, I have switched several large projects including projects of customers to a new framework, built from the ground up.

It's basically something that prevents you from writing code like this:
Query1.Sql.Text := 'SELECT I.ID AS INVOICE_ID, I.INVOICE_TYPE, I.INVOICE_NO, I.ISSUE_DATE, I.PRINT_DATE, ' +
  'C.ID AS CUSTOMER_ID, C.CUSTOMER_NAME, C.SEX, C.BIRTHDAY, N.ID AS COUNTRY_ID, N.COUNTRY_NAME' +
  'FROM INVOICE AS I INNER JOIN CUSTOMER AS C ON (C.ID = I.CUSTOMER_ID) ' +
  'LEFT JOIN COUNTRY AS N ON (N.ID = C.COUNTRY_ID)' +
  'WHERE I.ID = :INVOICE_ID;'
Query1.ParamByName('INVOICE_ID').AsInteger := 1;
Query1.Open;
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',
  [Query1.FieldByName('INVOICE_NO').AsInteger,
  Query1.FieldByName('CUSTOMER_NAME').AsString,
  Query1.FieldByName('COUNTRY_NAME').AsString]));  
and instead write this:
Invoice := Manager1.Find<TInvoice>(1);
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',
  [Invoice.InvoiceNo, Invoice.Customer.Name, Invoice.Customer.Country.Name]));
Yes, it's an ORM framework! Instead of dealing with SQL statements, deal with objects directly, hiding all SQL intricacies for you.

We made it a generally useful ORM framework. We added a lot of features. We added lot of documentation, examples and demos. We tested it heavily with several databases and data-access components. We will release it very soon. And it's from TMS Software.

Bookmarks: 

Wagner Landgraf




This blog post has received 49 comments.


1. Monday, November 21, 2011 at 10:32:23 AM

Look fine!
In my application I use two database - Firebird and MSSQL. Is it possible to use this product for two database in one app? Thank you.

Sergey Ivanov


2. Monday, November 21, 2011 at 11:14:42 AM

We''re working on final features now. Currently it''s possible use both databases, but the object-relational mapping must be the same for both databases.

Wagner Landgraf


3. Monday, November 21, 2011 at 2:56:35 PM

Sounds very good.

Maybe if you use the absolutely superb anydac data-access components you will be able to target virtually any database.

Tom Conlon


4. Tuesday, November 22, 2011 at 5:30:15 AM

Several data-access components are supported - dbExpress, ADO, AnyDac, etc.

Wagner Landgraf


5. Tuesday, November 22, 2011 at 7:35:23 AM

I wish it will support Sqlite without any 3rd party dependencies.

Ye Zhihua


6. Tuesday, November 22, 2011 at 4:35:20 PM

Nice, finally more movement in the delphi world with the generics!!

But need more info though to see how the mapping is done and if we can replace our own ORM (well, its more a object - sql mapper with proxies, mediators etc)

Where can i signup for more info?

Marius


7. Wednesday, November 23, 2011 at 4:25:04 AM

ancious to see it :)

paulo quicoli


8. Wednesday, November 23, 2011 at 7:56:58 AM

@Marius: mapping is currently done with attributes. We also can consider adding more mapping modes in future (xml for example). Aurelius is designed to be non-intrusive, i.e., you can start using it almost without changing anything in your application, you can use Plain Old Delphi Objects. Send us an e-mail for more info.

Wagner Landgraf


9. Wednesday, November 23, 2011 at 8:29:23 AM

Looks promising..

Steve Faleiro


10. Wednesday, November 23, 2011 at 8:16:36 PM

When oh when will it be available?


Campbell Neal


11. Thursday, November 24, 2011 at 8:06:55 AM

Sounds good and sure fill a void that was felt for some time now.

oorja


12. Thursday, November 24, 2011 at 11:04:26 AM

Do you have a release data?
Which Delphi versions will be supported?

Magno Machado Paulo


13. Thursday, November 24, 2011 at 12:33:07 PM

@Magno: Beta should be release shortly (couple of weeks). It uses a lot of new Delphi features (Rtti, generics, attributes, operator overloading, etc.) so it will be available for Delphi 2010 and up.

Wagner Landgraf


14. Friday, November 25, 2011 at 8:46:54 PM

Will it supoort Nexus DB ?

Conner Robert


15. Saturday, November 26, 2011 at 5:42:36 AM

@Conner: Yes, Nexus DB will be supported.

Wagner Landgraf


16. Sunday, November 27, 2011 at 4:06:29 AM

Hi Wagner

very nice!!!

I''m anxious to try it;-)

There will also be support for ElevateDB 2.x Unicode?

Claudio Piffer


17. Tuesday, November 29, 2011 at 3:56:56 AM

Actually you don''t show the entire code, in the first part
-sql preparation
-sql execution

in the new style
-prototype
-sql execution

I don''t see really a big gain except that you can now express tables as classes, but you end up writing sometimes even more code than old fashioned.

I mean its really cool that you have this now but I don''t get ORM in general to be more efficient.

Neil


18. Tuesday, November 29, 2011 at 6:13:46 AM

@Neil: only thing missing in the code is the class mapping, which would be adding attributes to the fields for the mapping. Actually if automapping is use, not much more code is needed: just a single attribute informing the automapping.
ORM is not conceptually better than SQL or any other thing. It''s just a tool. It can be useless for you, but can fit well and be very useful for others. It''s up to us to provide a good tool and explain how you use it. It''s up to you to tell if it''s good for your needs or not.

Wagner Landgraf


19. Thursday, December 01, 2011 at 2:34:09 PM

Provider error '80070057'

The parameter is incorrect.

/site/fso.asp, line 92