New and Updated Features

Thread Safety

OO4O is thread-safe and can be used effectively in multithreaded applications and environments such as such as the Microsoft Internet Information Server (IIS). OO4O supports both the free and apartment threading models in COM/DCOM.

Access to OO4O object attributes are serialized when used with multiple threads of execution. To achieve maximum concurrency in query execution in a multithreaded application with OO4O, avoid sharing objects in multiple threads.

You should also avoid using commit and rollback operations on a session object that is shared among multiple threads since all connections associated with that session will be committed or rolled-back. If you want to perform commit and rollback operations on a session object, you should create a unique session object for each database object used.

Using the Connection Management Facility

OO4O introduces a new interface for pooling of database connections. The pool may be created with zero or more
ODatabase objects and can grow to a maximum that is specified at the time the pool is created. Connections in the pool are automatically closed if not used for a specified time.

This facility is essentially a resource manager for
ODatabase objects containing database connections. This facility maintains the open state on frequently used objects, and thereby eliminates the need to continuously create and destroy connections. It is particularly useful in heavily used mid-tier application server components such as ISAPI/ASP scripts in IIS that connect to Oracle databases to execute queries on every invocation. New ODatabase objects are created only if there are more objects required than are available in the pool, thus, significantly improving performance and scalability.

For an example of this in IIS, please refer to the ASP sample directory.

Multiple Cursor Return from a PL/SQL Procedure

OO4O can now return multiple cursors to the client from a single query. This is useful, for instance, if a user needs the result set of two disjointed queries.

This feature improves performance by lowering network traffic. OO4O's PL/SQL table return capability can send (or receive) an array of values with a single network transaction. Only a single network round-trip is required for returning data from multiple cursors.

Enhancing Performance

Field collection access in a dynaset is improved. If loops are not coded properly, the system is now optimized so that, in creating default field collection objects, the objects are not created and destroyed with each dynaset iteration.

The help file now contains a number of tips and techniques for improving performance. Coding methods, such as early binding and dynaset cache tuning, can significantly improve performance.

A number of bug fixes are included in this release. The eradication of some bugs, such as very small memory leaks, represent significant gains when OO4O is used in a 7-by-24 environment.

General

OO4O is available on Windows 95/98 and NT, and can run in an NT server environment. There will not be any new 16-bit versions of OO4O, and the current 16-bit OO4O release 2.1 has now entered maintenance mode.