The Salesforce driver supports the standard SQL query language to fetch, insert, update, and delete data from Salesforce.com, Force.com, and Database.com.
You can also query the SYSTEM_REMOTE_SESSIONS in the INFORMATION_SCHEMA schema to get version information.
The driver translates the SQL statements provided by the application to Salesforce queries (SOQL) and Web service calls. The SQL statements supported by the driver are documented in Supported SQL Statements and Extensions (Salesforce Driver) in the DataDirect Connect Series for JDBC Reference.
The driver maps the Salesforce data model into a set of related relational tables. The mapping representation is stored in XML files external to the driver, which allows the sharing of map files among different client machines.
The driver uses a client-side data cache for improved performance. You can define rules that specify which data to cache on the client as well as when the cached data becomes invalid and needs to be refreshed (see Client-Side Caches for details).
The Salesforce driver can be used with industry standard tools such as:
SAP Crystal Reports
Hibernate
Oracle WebLogic
Spring for JDBC
Developers can leverage their existing SQL knowledge instead of having to learn the Salesforce query language and APIs.
The following figure shows the different components of an environment that uses the Salesforce driver to access Salesforce.
When an application connects to Salesforce through the driver, the driver establishes a Web service session with the Salesforce instance and a database session that opens an embedded database. The application can establish multiple sessions with Salesforce; however, additional Web service and database sessions are always opened in the ratio of one database session per Web service session. The database session maintains the object-to-relational table mapping. In addition, it maintains cached tables and local tables, as well as maintaining views. See Database Configuration File for more details.
Salesforce has certain standard objects that always exist, even if they do not contain anything. Salesforce administrators can also create custom objects using the Salesforce browser interface. The relationships among these objects are tabular, like those among the tables in a database. The Salesforce driver recognizes the relationships among both standard Salesforce objects and custom objects and can access and update both. The relationships among objects can be reported through the getExportedKeys(), getImportedKeys(), and getPrimaryKey() metadata methods. The driver is optimized to leverage Salesforce mechanisms for joining data, minimizing the amount of data that needs to be fetched over the network.