IBM PureQuery

From Wikipedia, the free encyclopedia
Jump to: navigation, search
pureQuery
Developer(s) IBM
Stable release 2.2 / June 18, 2009 (2009-06-18)
Operating system Cross-platform
Platform Java
Type Java Data Access platform (computing)
Website

IBM Data Studio

pureQuery download

History[edit]

pureQuery was developed by a team of Java software developers from IBM Information Management Software group.

The first pureQuery openBeta ended October 31, 2007. IBM Data Studio v1.1, which contains pureQuery, was released on 10-31-07. IBM Data Studio 1.1.1, including IBM Data Studio Developer and IBM Data Studio pureQuery Runtime were released December 12, 2007. IBM Data Studio 1.1.2 (or fixpack 2) was released March 28, 2008. IBM Data Studio Developer and IBM Data Studio pureQuery Runtime v1.2 were released on July 31, 2008. IBM Data Studio pureQuery Runtime for z/OS was released on August 29, 2008.

IBM Data Studio Developer 2.1 and IBM Data Studio pureQuery Runtime 2.1 (for Linux, UNIX, and Windows) were released on December 19, 2008.

IBM Optim Development Studio 2.2 and IBM Optim pureQuery Runtime 2.2 (for Linux, Unix and Windows) were released on June 18, 2009. pureQuery was renamed from Data Studio pureQuery to Optim pureQuery at the 2.2 release. IBM Data Studio Developer was also renamed to IBM Optim Development Studio at the 2.2 release.

pureQuery is IBM's, high-performance data access platform focused on simplifying, developing, securing, managing, and optimizing new and existing applications that access data. Data access includes the persistence of the data encapsulated in objects and all data CRUD operations. pureQuery supports both Java and .NET.

The benefits of using pureQuery extend throughout the design, development, deployment, management, and governance stages of the application life cycle.

pureQuery provides access to data in databases and in-memory Java objects via its tools, APIs, and runtime environment as delivered in IBM Data Studio Developer and IBM Data Studio pureQuery Runtime.

Feature summary[edit]

pureQuery makes Java data access simple for agile development and improved application performance. pureQuery can be used both in standalone Java SE applications and in Java EE applications using servlets or EJB session beans. pureQuery can also be used to develop your data access for Web 2.0 applications. For example, pureQuery can return XML and JSON from a data source. IBM's Project Zero uses pureQuery for its data access.

Optim Development Studio provides the development tools for pureQuery. It includes an integrated Eclipse Java and query(SQL, SQL/XML, XQuery) editor that provides Java data access developers with an interactive software development environment. This provides query content assist within the Java editor in Eclipse.

pureQuery supports two programming styles: inline and method style.

In an annotated method pureQuery application, the SQL string is defined as an element of a Java 5.0, pureQuery Annotation, such as @Select, @Update and @Call. pureQuery tooling automatically generates an optimized implementation for the annotated method. The annotated method style is capable of supporting both static and dynamic execution of SQL.

In the inline style, SQL statements can be created “inline” within the code as a java String object. This dynamically generated statement is passed as a String parameter to the pureQuery Data interface method. The inline style was based on an early draft enhancement to the JDBC 4.0 specification, although it is not in the final JDBC 4.0 spec.

pureQuery Java API code sample[edit]

Inline Style Example:

Data data = DataFactory.getData (datasource);
// Insert an employee of type Employee bean in the database
data.update("insert into EMPLOYEE
(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE, JOB, EDLEVEL, SEX, BIRTHDATE, SALARY, BONUS, COMM) values
(:employeeNumber, :firstName, :midinit, :lastname, :workdept, :phoneno, :hiredate, :job, :edlevel, :sex, :birthdate, :salary, :bonus, :commission)"
, employee);

// Query the database for employees
Iterator<Employee> employees = data.queryIterator ("select * from EMPLOYEE", Employee.class);

// Query the database for one employee
Iterator<Employee> employee = data.queryFirst ("select * from EMPLOYEE where EMPNO = :employeeNumber", Employee.class,
  employees);

Annotated Method Style Example:

// Annotate createEmployee method with sql to execute when method is invoked
@Update(sql="insert into EMPLOYEE
(EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE, JOB, EDLEVEL, SEX, BIRTHDATE, SALARY, BONUS, COMM) values
(:employeeNumber, :firstName, :midinit, :lastname, :workdept, :phoneno, :hiredate, :job, :edlevel, :sex, :birthdate, :salary, :bonus, :commission)"
)
int createEmployee(Employee e);

// Annotate getEmployees method with sql to execute when method is invoked
@Select(sql="select EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE, JOB, EDLEVEL, SEX, BIRTHDATE, SALARY, BONUS, COMM
from EMPLOYEE"
)
Employee getEmployees();        

// Annotate getEmployee method with sql to execute when method is invoked
@Select(sql="select EMPNO, FIRSTNME, MIDINIT, LASTNAME, WORKDEPT, PHONENO, HIREDATE, JOB, EDLEVEL, SEX, BIRTHDATE, SALARY, BONUS, COMM
from EMPLOYEE where EMPNO = :employeeNumber"
)
Employee getEmployee(Employee e);

pureQuery client optimization[edit]

  1. Capture the SQL
    • Use pureQuery API, generate from WebSphere JPA, or capture while executing
    • Use with custom-developed, framework-based, or packaged applications
  2. Bind SQL to DB2
    • Use tooling in Data Studio Developer, WAS console, or command line
  3. Choose execution mode
    • Dynamic or static
    • Choose at deployment time instead of development time

.NET support[edit]

.NET support was added in the pureQuery 2.1 release. It currently has support of the pureQuery Client optimization feature which allows dynamic SQL execution .NET programs to be converted to static SQL execution.

See also[edit]

Resources[edit]

Articles

Download pureQuery

pureQuery Forum (aka newsgroup)

pureQuery Documentation

Using the pureQuery API documentation

pureQuery Javadocs

System Requirements

FAQ