From 62ec38b1821db48dd7250b2cd82a7203ed6ec889 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 28 Sep 2010 21:55:36 +0200 Subject: Documentation fixes --- doc/manual.xhtml | 270 +++++++++++++++++++++++++++---------------------------- 1 file changed, 135 insertions(+), 135 deletions(-) diff --git a/doc/manual.xhtml b/doc/manual.xhtml index e8ee426..f49bed2 100644 --- a/doc/manual.xhtml +++ b/doc/manual.xhtml @@ -424,17 +424,17 @@ for consistency. data member.
  • Provide clean and easy to use object-oriented persistence - model and database APIs that support development of realistic + model and database APIs that support the development of realistic applications for a wide variety of domains.
  • -
  • Provide portable and thread-safe implementation. ODB should be +
  • Provide a portable and thread-safe implementation. ODB should be written in standard C++ and capable of persisting any standard C++ classes.
  • Provide profiles that integrate ODB with type systems of widely-used frameworks and libraries such as Qt and Boost.
  • -
  • Provide high-performance and low overhead implementation. ODB +
  • Provide a high-performance and low overhead implementation. ODB should make efficient use of database and application resources.
  • @@ -443,11 +443,11 @@ for consistency.

    About This Document

    The goal of this manual is to provide you with an understanding - of the object persistence model and APIs as implemented by ODB. + of the object persistence model and APIs which are implemented by ODB. As such, this document is intended for C++ application developers and software architects who are looking for a C++ object persistence solution. Prior experience with C++ is required to understand - this document. Basic understanding of relational database systems + this document. A basic understanding of relational database systems is advantageous but not expected or required.

    @@ -495,13 +495,13 @@ for consistency. database schema, and run native SQL SELECT queries.

    ODB is not a framework. It does not dictate how you should write - your application. Rather it is designed to fit into your + your application. Rather, it is designed to fit into your style and architecture by only handling object persistence and not interfering with any other functionality. There is no common base type that all persistent classes should derive - from nor there are any restrictions on the data member types + from nor are there any restrictions on the data member types in persistent classes. Existing classes can be made persistent - with little or nor modifications.

    + with a few or no modifications.

    ODB has been designed for high performance and low memory overhead. Prepared statements are used to send and receive @@ -514,26 +514,26 @@ for consistency. APIs to reduce overhead and provide the most efficient implementation for each database operation. Finally, persistent classes have zero memory overhead. There are no hidden "database" members - that each class must have nor there are per-object data structures + that each class must have nor are there per-object data structures allocated by ODB.

    In this chapter we present a high-level overview of ODB. We will start with the ODB architecture and then outline the workflow of building an application that uses ODB. We will - conclude this chapter by contrasting the drawbacks of + conclude the chapter by contrasting the drawbacks of the traditional way of saving C++ objects to relational databases with the benefits of using ODB for object - persistence. The next chapter takes the more hands-on approach + persistence. The next chapter takes a more hands-on approach and shows the concrete steps necessary to implement object persistence in a simple "Hello World" application.

    1.1 Architecture and Workflow

    From the application developer's perspective, ODB - consist of three main components: the ODB compiler, the common + consists of three main components: the ODB compiler, the common runtime library, called libodb, and the database-specific runtime libraries, called - libodb-<database> where <database> is + libodb-<database>, where <database> is the name of the database system this runtime is for, for example, libodb-mysql. For instance, if the application is going to use the MySQL database for @@ -574,9 +574,9 @@ for consistency. the ODB Pragma Language and ODB Query Language. The ODB Pragma Language is used to communicate various properties of persistent classes to the ODB compiler by means of special #pragma - directives embedded in the C++ header files. It controls such aspects - of the object-relational mapping as names of tables and columns that - are used for persistent classes and their members or mapping between + directives embedded in the C++ header files. It controls aspects + of the object-relational mapping such as names of tables and columns + that are used for persistent classes and their members or mapping between C++ types and database types.

    The ODB Query Language is an object-oriented database query @@ -596,7 +596,7 @@ for consistency.

    1.2 Benefits

    The traditional way of saving C++ objects to relational databases - requires manually writing code that converts between the database + requires that you manually write code which converts between the database and C++ representations of each persistent class. The actions that such code usually performs include conversion between C++ values and strings or database types, preparation and execution of SQL queries, @@ -607,16 +607,16 @@ for consistency.

  • Difficult and time consuming. Writing database conversion code for any non-trivial application requires extensive knowledge of the specific database system and its APIs. - It can also take considerable amount of time to write + It can also take a considerable amount of time to write and maintain. Supporting multi-threaded applications can complicate this task even further.
  • Suboptimal performance. Optimal conversion often requires writing large amounts of extra code, such as parameter binding for prepared statements and caching - of connections, statements, and buffers. Writing such - code in an ad-hoc manner is often too difficult and time - consuming.
  • + of connections, statements, and buffers. Writing code + like this in an ad-hoc manner is often too difficult + and time consuming.
  • Database vendor lock-in. The conversion code is written for a specific database which makes it hard to switch to another @@ -637,7 +637,7 @@ for consistency.