7

Not sure what happened to Bold/Eco during the Borland/Codegear/Embarcadero transition but I sure miss it in the newer versions of Delphi. Anyone know of a framework that comes close?

If not, maybe you could suggest a combination of libraries and components that comes close.

Roland Bengtsson
  • 5,058
  • 9
  • 58
  • 99
Kenneth Cochran
  • 11,954
  • 3
  • 52
  • 117

5 Answers5

4

hcOPF seems to be the only real ORM for Delphi win32, but it does not yet come close.

For UML modelling and such for Delphi win32(or C#), I recommend Model Maker.

Both tools have Delphi 2010 support.

--jeroen

Jeroen Wiert Pluimers
  • 23,965
  • 9
  • 74
  • 154
  • The death of BOLD was unfortunate, it was dropped I believe because ECO replaced it, and ECO died when Delphi.net died. Maybe ECO could become a possible future technology when you're using Delphi Prism though. – Warren P Aug 07 '10 at 23:04
  • Actually, ECO didn't die: it got developed for both C#, Delphi.NET, and Delphi Prism. So you can still use it, but only in .NET projects. (http://capableobjects.com/apps/InstantForum414/Topic4219-4-1.aspx) – Jeroen Wiert Pluimers Aug 08 '10 at 09:45
  • 1
    To implement a Domain Driven Design, you'll need much more than an ORM. It is a SOA / Client-Server design, not only a way of modeling data and persitence. – Arnaud Bouchez May 27 '12 at 17:05
  • Don't try SOA at Dutch people. There it means STD (; – Jeroen Wiert Pluimers May 27 '12 at 21:12
4

The alternatives are list of OPFs for Delphi win32 (with a short description for each one).

I have only ever used Bold for Delphi (and still do) but I don't think any of the alternatives come even close in the feature set. And that I suppose is the key, which features are important to you ? If you don't need everything Bold provides maybe you can settle on one of the alternatives.

Alternatively, you can still use Bold, the latest release is Bold for Delphi 2006 and hope that Embarcadero eventually open sources it, or continues development. There is a constant user pressure to do something with Bold, but Embarcadero seems to handle pressure well.

  • It was stated on Embarcadero forums that Bold will unfortunately probably *never* be released as Open Source, for licensing reasons (it contains some third-party bricks which are not owned by Embarcadero). But some Bold users [wrote a petition](http://www.linkedin.com/groups/Bold-Delphi-3112789?gid=3112789&trk=hb_side_g). – Arnaud Bouchez May 27 '12 at 17:09
3

This is One of the bigger lack in the today's Delphi. Having only an old TDataset paradigm is not enough for complex projects.

Write a simple active record in Delphi 2010 is not difficult. But for complex project you need some datamapper with external config file.

I'm writing a simple Hibernate for Delphi (DORM aka Delphi Object Relational Mapper). If someone want to participate send an email to d [dot] teti at bitTime [dot] it.

eg. following is a unit test for DORM

procedure TTestDORM.TestUpdate;
var
  p: TPersona;  //TPersona is a PODO "Plain Old Delphi Object" TObject descendat
  guid: string;
begin
  p := TPersona.Create;
  p.Nome := 'Daniele';
  p.Cognome := 'Teti';
  p.Eta := 30;
  p.DataDiNascita := EncodeDate(1979,11,04);
  Session.Save(p);  //DORM do an INSERT
  guid := p.guid;
  Session.Commit;
  Session.StartTransaction;
  p := Session.Load(TypeInfo(TPersona), guid) as TPersona; //DORM do a SELECT
  p.Nome := 'Peter';
  Session.Save(p); //DORM do an UPDATE
  Session.Commit;
  CheckEquals(1, Session.Count(TPersona));
  p := Session.Load(TypeInfo(TPersona), guid) as TPersona;  //DORM do a SELECT
  CheckEquals('Peter', p.Nome);
end;

Someone interested?

menjaraz
  • 7,551
  • 4
  • 41
  • 81
Daniele Teti
  • 1,764
  • 14
  • 20
  • 1
    ORM is just the low-most layer of a Domain Driven Design. You'll need a lot of features over it, mainly Service remote access, security, workflow, Client-Server communication, authentication... DDD is much more than an ORM! See http://domaindrivendesign.org/ – Arnaud Bouchez May 27 '12 at 17:04
2

I think that you can do the job with TMS Aurelius and TMS Data Modeler

Here is a interresting link

Hugues Van Landeghem
  • 6,755
  • 3
  • 34
  • 59
  • 1
    I do not understand how you may implement a Domain-Driven Design architecture (this is the OP main point) without SOA. ;) – Arnaud Bouchez May 27 '12 at 17:01
  • You are right, Bold was a pre-DDD framework, and ECO is now one reference of DDD modeling, both not based on SOA. the need of implementing DDD over SOA was a matter of debate, [at least in 2008](http://www.infoq.com/news/2008/09/SOADDD). Today's DDD projects tend to include SOA, since it does target the complexity of DDD projects. ECO is based on a 10 years old ORM technology, in a pre-SOA world. Today DDD expects more than an ORM + a modeler. See [this article for instance](http://msdn.microsoft.com/en-us/magazine/dd419654.aspx). – Arnaud Bouchez May 28 '12 at 11:47
  • @Arnaud Bouchez Can't he just add a SOA layer over it? OP didn't mention DDD explicitly besides a tag, maybe he just didn't use SOA with Bold/ECO – landgraf.dev Jun 02 '12 at 20:51
2

Begin Edit/update:

Since this answer was published, the framework was enhanced a lot, especially to supply all needed features for implementing true Domain-Driven Design:

  • Database agnosticism (not only SQLite3, but any database, including MS SQL or Oracle) of the ORM (even with the Delphi Starter edition);
  • Interface-based services, similar to WCF;
  • Very fast http.sys event-driven HTTP server, running in Kernel mode;
  • Ready to work with AJAX clients;
  • A lot of improvements and fixes;
  • It is now called Synopse mORMot Framework.

With all advantages of Delphi, i.e. small and fast executable, no runtime/framework required, all source code provided (no black box approach), no specific OS nor additional costs.

See this blog article to find out how mORMot is probably the first Delphi framework providing all bricks necessary to implement Domain-Driven Design. With a lighter and faster solution than the "classic" Java or .Net implementations.

End Edit/update

I've developed an ORM RESTful JSON based framework, using SQlite3 for its database persistence.

It's not so complete than Bold or OPF, of course (no UML nor OCL), but it works, and is tested with Delphi 7 up to Delphi 2010. And it's still maintained, and will be forever, because it's free and opensource.

You've interesting features like integrated User Interface generation and i18n, reporting and export to PDF, client/server services, integrated unit testing. It uses JSON for data transmission, and a RESTful architecture over in-process communication, windows GDI messages, named pipes, or HTTP/1.1. So it could be used for developing AJAX applications.

This framework integrates gracefully with our SynProject tool, which creates documentation from the source code, with nice graphs and complete document traceability (it has been used to fulfill IEC 62304 requirements for a medical SW we wrote with this framework). So you don't have UML, but you have documentation and diagrams available at hand.

If you're interested in ORM and Delphi, you're welcome joining the adventure of Open Source! http://blog.synopse.info/category/Open-Source-Projects/SQLite3-Framework

Arnaud Bouchez
  • 42,305
  • 3
  • 71
  • 159
A.Bouchez
  • 386
  • 2
  • 4
  • If you don't want a full framework, you can use: 1. basic serialization of your object (using TReader/TWriter or ObjectBinaryToText/WriteComponent and ObjectTextToBinary/ReadComponent); 2. some direct conversion to text, using for example our WriteObject() ReadObject() properties in SQlite3Commons.pas of our framework. – A.Bouchez Aug 06 '10 at 10:02
  • See http://blog.synopse.info/post/2013/01/05/Domain-Driven-Design-and-mORMot for a general presentation of DDD with Delphi, and how mORMot features all the needed bricks to work with. – Arnaud Bouchez Jan 05 '13 at 20:10