Blog
All Blog Posts | Next Post | Previous Post
What is TMS Aurelius?
Friday, November 18, 2011
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]));
Invoice := Manager1.Find<TInvoice>(1); ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s', [Invoice.InvoiceNo, Invoice.Customer.Name, Invoice.Customer.Country.Name]));
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.
Wagner Landgraf

This blog post has received 49 comments.

Wagner Landgraf

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

Wagner Landgraf

Ye Zhihua

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

paulo quicoli

Wagner Landgraf

Steve Faleiro

Campbell Neal

oorja

Which Delphi versions will be supported?
Magno Machado Paulo

Wagner Landgraf

Conner Robert

Wagner Landgraf

very nice!!!
I''m anxious to try it;-)
There will also be support for ElevateDB 2.x Unicode?
Claudio Piffer

-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

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

will it support DATASNAP ?
I´m waiting for it !
regards
Ricardo Pascoal

Wagner Landgraf

This framework will binding the object BO with componentes not dbware or we need gonna user livebindings for it ?
could you post a complete example of persisting a class or a video demo ?
thanks
Ricardo Pascoal

Wagner Landgraf

Greg


Bruno Fierens

When is the release date?
C@uly


Wagner Landgraf

Majid


Wagner Landgraf

thx
Bagus Prasojo


Wagner Landgraf

Thanks,
Femi
Femi


Wagner Landgraf

giuliano


Wagner Landgraf

Aurelius seems to be (just another nice) way of mixing queries and objects (basicly just support classes) and like mentioned before i''m very interested in the first release. We will need a mix of Aurelius and the good old query power (and thats including the ugly dbgrid approach)
Marius

Also, is this project related to the Data Modeler product you have?
Troy Wolbrink


Wagner Landgraf


2) Data Modeler 1.8 update will include support for Aurelius code generation
Bruno Fierens

They plan to support Data-Access http://www.devart.com/ibdac/ IBDAC components?
If so, have a due date?.
Thank you.
James

Edson


Wagner Landgraf

Working with explicit transactions with TMS Aurelis? (StartTransaction, Rollback, Commit, InTransaction).
I would encapsulate the transaction in a class AOP (Aspect);
Hugo Castro


Var
Trans: IDBTransaction;
begin
Trans := MyConnection.BeginTransaction; // MyConnection is IDBConnection
Try
//...
Trans.Commit;
Except
Trans.Rollback;
Raise;
End;
End;
Wagner Landgraf

How to know if you have an active transaction?
Something like, IDBConnection.InTransaction. (I see that there is not a method signature in the interface)
Hugo Castro


Wagner Landgraf

Currently we''re using data access components (ODAC) with CashedUpdates feature (it''s possible to change few records of dataset than call CancelUpdates and dataset rollback all changes on modified records)
Is it possible to implement CashedUpdates functionality in TAureliusDataset or somehow simulate it without requery data from server?
Thank you
Anton Jarmolovic
Anton Jarmolovic


Wagner Landgraf

Sergio Jonas Schulz


Wagner Landgraf
All Blog Posts | Next Post | Previous Post
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