docs.intersystems.com
Home

First Look: JDBC and InterSystems Databases
InterSystems: The power behind what matters   
Search:  


If you want to use Java with InterSystems IRIS™, this document provides an introduction to how to use the InterSystems JDBC driver to connect to an InterSystems IRIS instance.
To browse all of the First Looks, including others that can be performed on a free cloud instance or web instance, see InterSystems First Looks.
JDBC: How to Use It with InterSystems IRIS
InterSystems provides a fully compliant (JDBC 4.2), pure Java, type 4 JDBC driver, which is a single standalone JAR file with no dependencies. If you are already familiar with JDBC, and have a JDK 1.7 or 1.8 installed, all you need to do is to add the JDBC driver to your local CLASSPATH (see JDBC: Exploring It). The JDBC URL (connection string) is:
jdbc:IRIS://ipAddress:superserverPort/namespace
where the variables represent the InterSystems IRIS instance host’s IP address, the instance’s superserver port, and a namespace on the instance.
If you are connecting to an instance on the local machine (either using a hostname of localhost or an IP address of 127.0.0.1), the connection automatically uses a special, high-performance local connection called a shared memory connection. For more information about shared memory connections, see JDBC: What’s Unique about Shared Memory Connections.
The point of this document is to give you a taste of using JDBC with InterSystems IRIS without bogging you down in details, so we’ve kept this exploration simple. When you bring InterSystems IRIS to your production systems, though, there are many things you will need to do differently, such as in regard to (but not limited to) security. So be sure not to confuse this exploration of InterSystems IRIS with the real thing! The sources provided at the end of this document will give you a good idea of what’s involved in using JDBC with InterSystems IRIS in production.
JDBC: Part of InterSystems IRIS Java Connectivity Options
The InterSystems IRIS JDBC driver is the core InterSystems IRIS Java component, and supports traditional relational (SQL) access. It also provides the connection mechanism for Java calls that use the InterSystems IRIS Native API for Java, which accesses the data in its natively stored format. For Java integration based on objects, InterSystems IRIS also provides a separate feature — the InterSystems IRIS XEP component.
Taken all together, InterSystems IRIS provides a unique set of capabilities to use the same physical connection and transaction context to manipulate data using multiple paradigms: native, relational, and object-oriented. For more complex applications, InterSystems fully supports Hibernate. Enabling all these forms of connectivity — InterSystems IRIS XEP, Hibernate, and also the InterSystems IRIS Spark Connector — is the InterSystems IRIS JDBC driver.
JDBC: What’s Unique about Shared Memory Connections
As with other database platforms, a JDBC connection to a remote InterSystems IRIS instance is over TCP/IP. To maximize performance, InterSystems IRIS also offers a Java shared memory connection. Shared memory connections are available to Java applications running on the same machine as an InterSystems IRIS instance.
A shared memory connection is a temporary device, backed virtual memory, which is shared by a JDBC client and an instance of InterSystems IRIS running on the same physical machine. Further, these connections do not require potentially expensive calls into the kernel network stack. By using a channel directly from the JDBC client to InterSystems IRIS, they provide the ultimate in low latency and high throughput for JDBC operations.
For detailed information on shared memory, see Shared Memory Connections in Using Java with the InterSystems JDBC Driver.
JDBC: Exploring It
We’ve developed a demo that shows you how to work with JDBC and InterSystems IRIS — and how straightforward that is.
Please note that this code does not demonstrate the improved performance power of the InterSystems Java shared memory connection, because it does not deal with the large volumes of data that the shared memory connection can handle so efficiently.
To use the procedure, you’ll need an instance of InterSystems IRIS and a system with a Java IDE of your choice. Select the InterSystems IRIS instance in one of these ways:
You can configure your IDE to connect to your InterSystems IRIS instance whether it is local, on the network, in the cloud, or on the web. For instructions, see InterSystems IRIS Connection Information and the appropriate section for your IDE in InterSystems IRIS Basics: Connecting an IDE. For this demo, you can connect to the USER namespace, as shown in the code that follows, or you can specify another one that you have created in your installed instance.
Next, add the InterSystems JDBC driver, intersystems-jdbc-3.0.0.jar, to your local CLASSPATH. The driver name is com.intersystems.jdbc.IRISDriver. You can download the JAR file from https://github.com/intersystems/quickstarts-java/tree/master/lib or using the link in the Connecting Your Java Application section of the InterSystems Labs page. If InterSystems IRIS is installed on your local machine or another you have access to, you can find the file in install-dir\dev\java\lib\JDK18 or install-dir\dev\java\lib\JDK17 where install-dir is the InterSystems IRIS installation directory.
Here is the sample code. Update the connection string and the username and password with the same information you used to connect your IDE to your instance, as described in InterSystems IRIS Connection Information in InterSystems IRIS Basics: Connecting an IDE.
import java.sql.*;

public class JDBCSample {
    public static void main(String[] str) throws Exception {
        String url = "jdbc:IRIS://127.0.0.1:51773/USER";

        Class.forName("com.intersystems.jdbc.IRISDriver");
        Connection connection = DriverManager.getConnection(url,"_SYSTEM","SYS");
        // Replace _SYSTEM and SYS with a username and password on your system

        String createTable = "CREATE TABLE People(ID int, FirstName varchar(255), LastName varchar(255))";
        String insert1 = "INSERT INTO People VALUES (1, 'John', 'Smith')";
        String insert2 = "INSERT INTO People VALUES (2, 'Jane', 'Doe')";
        String query = "SELECT * FROM People";

        Statement statement = connection.createStatement();
        statement.executeUpdate(createTable);
        statement.executeUpdate(insert1);
        statement.executeUpdate(insert2);
        ResultSet resultSet = statement.executeQuery(query);
        System.out.println("Printing out contents of SELECT query: ");
        while (resultSet.next()) {
            System.out.println(resultSet.getString(1) + ", " + resultSet.getString(2) + ", " + resultSet.getString(3));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}
If the connection and queries have completed successfully, you should see a console window containing the results of the SELECT query.
Learn More about JDBC
To learn more about JDBC, other Java interoperability technologies in InterSystems IRIS, and other related topics, see:


View this article as PDF   |  Download all PDFs
Copyright © 1997-2019 InterSystems Corporation, Cambridge, MA
Content Date/Time: 2019-04-23 13:43:20