The TechInsite Object Persistence Framework (tiOPF) is an Open Source framework of Delphi/Object Pascal code that simplifies the mapping of an object oriented business model into a relational database. The framework is mature and robust. It has been in use on production sites for over seven years. It is free, open source, and available for immediate download with full source code.
Some of the key features of the tiOPF include:
- Lets you build an object oriented application that can swap databases with the flick of a command like a command line parameter or a change of a compiler directive. Currently, there are persistence layers for Interbase-IBX, Oracle-DOA, XML-MSDOM, XML-XMLLite, Paradox-BDE, MSAccess-ADO, MSSQLServer-ADO, FireBird-FBLib, FireBird-SqlDB, HTTP Proxy-Remote, CSV files and TAB files.
- Family of abstract base classes for building a complex object model
- 27 Persistent object aware components for building complex GUIs (Delphi only).
- Model-GUI-Mediators for enabling any standard GUI component to become Object Aware.
- 1400+ DUnit/fpcUnit tests to guarantee stability
- 160 pages of documentation to get you started
- News groups for support
- Automated, daily builds and unit testing
- Lots of demos focusing on specific parts of the framework for easy learning.
- Cross platform. Currently tested on Windows and Linux.
Peter Hinrichsen - Original Developer.
Graeme Geldenhuys - Ported to Free Pascal.
Mozilla Public License 1.1 (please contact the author if the MPL doesn't work with your project licensing)
The latest stable release can be found on the tiOPF Download page.
The latest development code can be found on the SubVersion server as follows
svn co https://tiopf.svn.sourceforge.net/svnroot/tiopf/tiOPF2/Trunk Source
NOTE: The tiOPF project has just release version 2.3. Currently the download page only has a Windows release available. Hopefully soon a platform independent download will be made available. The latest code can be downloaded from SubVersion though.
An easy way to get the code, is to use the command line svn client as follows. The commands below will checkout the Source, Demos and Docs directories of tiOPF version 2.
mkdir tiOPF2 cd tiOPF2 svn co https://tiopf.svn.sourceforge.net/svnroot/tiopf/tiOPF2/Trunk Source svn co https://tiopf.svn.sourceforge.net/svnroot/tiopf/tiOPF2_Demos Demos svn co https://tiopf.svn.sourceforge.net/svnroot/tiopf/tiOPF2_Docs Docs
Try and keep the above directory layout. It is much easier to support and the documentation build scripts will work without modification. The Source checkout will download some external links. Most of them are only related to Delphi, but there is one directory called FBLib which is required for the FBLib (Firebird RDMS) support. tiOPF requires a slightly modified version of FBLib 0.85 that adds some extra feature which will hopefully make it into the next FBLib release.
Dependencies / System Requirements
- Compiler: Free Pascal 2.0.4 (FPC 2.1.1 though more risky, also works. It is used for the nighly builds under Linux).
- Components for your required persistence layer, if it is not included with the compiler. eg: FBLib for FireBird RDMS.
Status: Stable (Tested on Windows and Linux.)
Inside the Source\Compilers\FPC directory there are four packages.
- Core units (run-time only package)
- GUI related units and components (run-time only package).
- Registers/Installs the components into the Lazarus component palette (design-time only package). The GUI components used under Lazarus are still experimental and under heavy development. It is recommended to get frequent updates from SubVersion if they are going to be used.
- Integrates the fpdoc generated help files into Lazarus's help system (design-time only package)
- Unzip the zip file or check out the source from SubVersion to a location of your choice.
- Open Lazarus
- Open the package tiOPF.lpk with Component/Open package file (.lpk) located in the Source\Compilers\FPC directory.
- Click on Compile
- Open the tiOPFGUI.lpk package and click Compile
- Open the tiOPFGUIDsgn.lpk package and click Compile and then Install (Lazarus should rebuild and restart).
- Open the tiOPFHelpIntegration.lpk package and click Compile and the Install (Lazarus should rebuild and restart).
I included the FBLib Firebird Library components as the default persistence layer for Free Pascal in the tiOPF.lpk package. That is the only one I use under Free Pascal/Lazarus. So make sure you have FBLib installed, or you need to remove it from the tiOPF package.
Persistence layers are controlled by a Compiler Directive under Compiler Options -> Other -> Custom Options. eg: The LINK_FBL directive relates to the FBLib components. For all the available options see the end of the tiOPFManager.pas unit.
For the Integrated Help to work, Lazarus needs to know how to find the html help files. Please read the tiOPFHelpIntegration.txt file located in \Source\Compilers\FPC for further instructions.
In Lazarus, open your project and add tiOPF as a Required Package (Project -> Project Inspector -> Add). Include tiObject in your uses clause. You are now ready to create objects descending from TtiObject or TtiObjectList.
See the example projects in the Demos directory for additional examples.