[Lazarus] [Long and partially OT] Database (OOP) programming: beginners manual?
Lukasz Sokol
el.es.cr at gmail.com
Tue Sep 20 16:53:21 CEST 2011
I knew I could count on Graeme for an answer (and a plug ;)
On 20/09/2011 14:42, Graeme Geldenhuys wrote:
[snip]
>
> Maybe we should stop you right there, and teach you the "correct"
> OOP way of doing database programming. :) No GUI unit should contain
> code as listed above...
That was just an example. the 'hello world' of databases :P
and only included cause I got an SIGSEGV in it...
> Database connections, Query components,
> embedded SQL, manual transaction handling etc. Yuck! Instead, use a
> OPF (Object Persistent Framework) that hides all that ugliness and
> let you only work with Business/Data Objects instead - the true OOP
> way.
Thing is - I may not need to know how the sewers work, that they need
to be laid with some sort of descent ;) or that you should not use
thin walled plastic pipes 15 meters underground ;) but it helps to know where
the manhole covers are in case it rains, so your car won't get washed away when
you build your garage over one...
>
> For a broad overview of tiOPF (a free OPF framework for Delphi and
> Free Pascal, and that works with VCL, LCL and fpGUI), see the
> following URL.
>
> http://tiopf.sourceforge.net/Doc/Concepts/index.shtml
>
Thanks. Will have a read.
>
> For example, changing your code above to something as shown below:
>
[snip code]
Thing is, this is yet another abstraction layer... see my remark about
sewers. My understanding of abstractions so far tries to embrace
simple OOP and inheritance, I don't even understand Interfaces yet...
>
> NOTE: The above code is done manually to show you the details of how
> it works. You can also use the "RAD" style of development, by
> dropping a TtiModelMediator component on a form and hooking up the
> properties via the Object Inspector.
>
Yeah that's cool, but yeah, the target when it's prime-time will be
non-visual, at least in one end...
>
> Now, saving the list back to the database is as simple as...
>
> oList.Save;
>
> Transaction handling, rollback on error etc are all handled for you.
>
Never been happier, still -see my remark about sewers.
(Or LWN article about abstraction trap)
> OPF frameworks like tiOPF really make using databases easy -
> including creating UI for your data. tiOPF also works with multiple
> database (Firebird, MySQL, Oracle, MDB, etc) and multiple database
> connection components (SqlDB, FBLib, dbExpress, Zeos, UIB, OIB etc).
> So you are definitely NOT locked into some specific vendor or suite
> of components. And as you have seen from the example above, you
> application code doesn't need to change at all, even if you switch
> from Firebird to PostgreSQL, or from SqlDB to UIB components. It's
> all simply controlled by a single compiler define.
>
>
> http://www.tiopf.com
>
> See also the Lazarus wiki page:
>
> http://wiki.lazarus.freepascal.org/tiOPF
>
>
> tiOPF has been used in production environments for well over a
> decade and has just under 2000 unit tests which run hourly to make
> sure it stays rock solid.
>
Should have added (PLUG) into topic ;)
>
> Regards, - Graeme -
>
Thanks for this,
many hours of reading, here I come.
Lukasz
More information about the Lazarus
mailing list