| |
| |
A Note from the Series Editor | |
| |
| |
Foreword | |
| |
| |
Preface | |
| |
| |
Introduction | |
| |
| |
Overview of the Book | |
| |
| |
Road Map | |
| |
| |
What Problem Needs Solving? | |
| |
| |
Putting Java and Persistent Data Together | |
| |
| |
Java and "Native" Interfaces | |
| |
| |
Java Serialization | |
| |
| |
Static SQL, Dynamic SQL, and ODBC (SQL/CLI) | |
| |
| |
JDBC, with and without ODBC | |
| |
| |
SQLJ Specifications and Standards | |
| |
| |
Java Blend | |
| |
| |
Interfaces to (ODMG-Compliant) OODBMSs | |
| |
| |
Chapter Summary | |
| |
| |
Java for the SQL Programmer | |
| |
| |
Introduction | |
| |
| |
The Java Environment | |
| |
| |
Control Flow in Java | |
| |
| |
Java Data Types | |
| |
| |
Primitive Data Types | |
| |
| |
Object Wrappers for the Primitive Data Types | |
| |
| |
Strings | |
| |
| |
The BigDecimal Class | |
| |
| |
Arrays | |
| |
| |
Java Classes | |
| |
| |
Fields, Methods, and Constructors | |
| |
| |
Method Invocation | |
| |
| |
Static Fields, Static Methods, and Static Initializers | |
| |
| |
The main Method | |
| |
| |
Garbage Collection | |
| |
| |
Object-Oriented Aspects of Java | |
| |
| |
Inheritance | |
| |
| |
The Object Class | |
| |
| |
Polymorphism | |
| |
| |
Abstract Classes and Methods | |
| |
| |
Interfaces | |
| |
| |
Exceptions | |
| |
| |
Packages | |
| |
| |
Serialization and Externalization | |
| |
| |
Serialization | |
| |
| |
Externalization | |
| |
| |
JAR Files | |
| |
| |
Other Features of the Java Programming Language | |
| |
| |
Chapter Summary | |
| |
| |
SQL for the Java Programmer | |
| |
| |
Introduction | |
| |
| |
SQL--What Is It and What's It Good For? | |
| |
| |
Application Languages versus Data Sublanguages | |
| |
| |
Procedural versus Nonprocedural Languages | |
| |
| |
SQL's Background and Focus | |
| |
| |
SQL Language Resources | |
| |
| |
SQL Examples | |
| |
| |
Data Retrieval | |
| |
| |
Data Creation | |
| |
| |
Updating Data | |
| |
| |
Removal of Data | |
| |
| |
More Complex Operations | |
| |
| |
Stored Routines | |
| |
| |
Why Use SQL Instead of an OODBMS? | |
| |
| |
SQL and Java Together | |
| |
| |
Object Models: SQL and Java | |
| |
| |
Data Type Relationships | |
| |
| |
Null Values, 3-Valued Logic, and Related Issues | |
| |
| |
SQL and Programming Languages | |
| |
| |
Embedded SQL (and Module Language) | |
| |
| |
Dynamic SQL | |
| |
| |
Call-Level Interfaces | |
| |
| |
Result Sets | |
| |
| |
Data and Metadata--Relationships and Differences | |
| |
| |
Chapter Summary | |
| |
| |
JDBC 1.0 API | |
| |
| |
Introduction | |
| |
| |
Types of JDBC Implementations | |
| |
| |
JDBC Implementations | |
| |
| |
SQL Statements | |
| |
| |
Registering JDBC Drivers | |
| |
| |
Connecting to a Database | |
| |
| |
JDBC URLs | |
| |
| |
getConnection | |
| |
| |
Examining Database Metadata | |
| |
| |
Executing an SQL Statement Once | |
| |
| |
SELECT Statements | |
| |
| |
Positioned Update and Delete Statements | |
| |
| |
DML and DDL Statements | |
| |
| |
Unknown Statements and Call Statements | |
| |
| |
SQL Exception and Warning Conditions | |
| |
| |
Executing an SQL Statement Multiple Times | |
| |
| |
Executing a Call Statement | |
| |
| |
Asynchronous Execution | |
| |
| |
JavaSoft JDBC-ODBC Bridge | |
| |
| |
Chapter Summary | |
| |
| |
SQLJ Part 0 | |
| |
| |
Introduction | |
| |
| |
SQLJ--An Informal Group of Companies | |
| |
| |
Writing an SQLJ Part 0 Program | |
| |
| |
A Simple SQLJ Part 0 Program | |
| |
| |
Connection Contexts | |
| |
| |
Execution Contexts | |
| |
| |
Host Variables and Expressions | |
| |
| |
Data Type Issues | |
| |
| |
Calling Stored Routines | |
| |
| |
Result Set Iterators | |
| |
| |
Other SQLJ Part 0 Statements | |
| |
| |
SQLJ Part 0/JDBC Interoperability | |
| |
| |
Using SQLJ Part 0 Inside a Database | |
| |
| |
SQLJ Part 0 Translator | |
| |
| |
Binary Portability | |
| |
| |
Customization of an SQLJ Part 0 Application | |
| |
| |
Execution of Your SQLJ Part 0 Application | |
| |
| |
Levels of Conformance | |
| |
| |
SQLJ Part 0 Reference Implementation Translator | |
| |
| |
Products Supporting SQLJ Part 0 | |
| |
| |
Advantages of SQLJ Part 0 | |
| |
| |
SQLJ Part 0 Runtime Interfaces and Classes | |
| |
| |
sqlj.runtime.AsciiStream | |
| |
| |
sqlj.runtime.BinaryStream | |
| |
| |
sqlj.runtime.ConnectionContext | |
| |
| |
sqlj.runtime.ExecutionContext | |
| |
| |
sqlj.runtime.ForUpdate | |
| |
| |
sqlj.runtime.NamedIterator | |
| |
| |
sqlj.runtime.PositionedIterator | |
| |
| |
sqlj.runtime.ResultSetIterator | |
| |
| |
sqlj.runtime.StreamWrapper | |
| |
| |
sqlj.runtime.UnicodeStream | |
| |
| |
sqlj.runtime.SQLNullException | |
| |
| |
SQLJ Part 0 Exceptions | |
| |
| |
Chapter Summary | |
| |
| |
SQLJ Part 1 | |
| |
| |
Introduction | |
| |
| |
Review of SQL/PSM | |
| |
| |
Installing JAR Files in SQL | |
| |
| |
Creating Procedures and Functions | |
| |
| |
Using a Method in an SQL Function | |
| |
| |
Using a Method in an SQL Procedure | |
| |
| |
Special Treatment for the main Method | |
| |
| |
Null Values | |
| |
| |
Static Variables | |
| |
| |
Privilege Checking | |
| |
| |
Exceptions | |
| |
| |
SQL-Java Paths | |
| |
| |
Privileges | |
| |
| |
Dropping Java Routines | |
| |
| |
Deployment Descriptors | |
| |
| |
Operations on JAR Files | |
| |
| |
Installing JAR Files | |
| |
| |
Replacing JAR Files | |
| |
| |
Removing JAR Files | |
| |
| |
Optional Features in SQLJ Part 1 | |
| |
| |
Status Codes | |
| |
| |
Products in the Marketplace | |
| |
| |
The Value Proposition for SQLJ Part 1 | |
| |
| |
Chapter Summary | |
| |
| |
SQL User-Defined Types | |
| |
| |
Introduction | |
| |
| |
User-Defined Types | |
| |
| |
Evolution of Type Systems | |
| |
| |
Introducing User-Defined Types | |
| |
| |
SQL: 1999 User-Defined Types | |
| |
| |
Distinct Types | |
| |
| |
Introducing Structured Types | |
| |
| |
Structured Types | |
| |
| |
Major Characteristics | |
| |
| |
Attributes | |
| |
| |
Behaviors and Semantics | |
| |
| |
Creating Instances of Structured Types | |
| |
| |
Using Structured Types | |
| |
| |
Storing in the Database | |
| |
| |
Updating in the Database | |
| |
| |
Retrieving from the Database | |
| |
| |
Deleting from the Database | |
| |
| |
Copying an Instance from One Site to Another | |
| |
| |
User-Defined Type Locators | |
| |
| |
Transforms and Transform Groups | |
| |
| |
The Type Predicate | |
| |
| |
Type Hierarchies | |
| |
| |
What Is a Type Hierarchy? | |
| |
| |
Subtypes and Supertypes | |
| |
| |
Single Inheritance | |
| |
| |
Most Specific Type | |
| |
| |
Substitutability | |
| |
| |
Polymorphism and Overloading (Redux) | |
| |
| |
Typed Tables | |
| |
| |
Relationship to Structured Types | |
| |
| |
REF Types and REF Values | |
| |
| |
Scope | |
| |
| |
Dereferencing REF Values | |
| |
| |
Invoking Methods on Rows of Typed Tables | |
| |
| |
Data Modeling Decisions | |
| |
| |
Table Hierarchies | |
| |
| |
Relationship to Type Hierarchies | |
| |
| |
Table Hierarchy Model | |
| |
| |
Syntax Enhancements | |
| |
| |
Implementation Issues | |
| |
| |
SQL Object Model | |
| |
| |
Why Does SQL Have an Object Model? | |
| |
| |
SQL Object Model Summary | |
| |
| |
A Java-SQL Translation Dictionary | |
| |
| |
Limitations: Technical and Economic | |
| |
| |
Chapter Summary | |
| |
| |
SQLJ Part 2 | |
| |
| |
Introduction | |
| |
| |
Associating a Class and a Structured Type | |
| |
| |
Creating Instances of External Java Datatypes | |
| |
| |
Referencing the Fields of External Java Datatypes | |
| |
| |
Using Java Methods in SQL | |
| |
| |
Using Java Methods That Modify an Object | |
| |
| |
Static Methods | |
| |
| |
Static Fields | |
| |
| |
Null Values | |
| |
| |
Ordering | |
| |
| |
Subtypes | |
| |
| |
Extending the Mappable Types | |
| |
| |
Deployment Descriptors | |
| |
| |
Products in the Marketplace | |
| |
| |
Sybase Adaptive Server Anywhere | |
| |
| |
Cloudscape | |
| |
| |
Chapter Summary | |
| |
| |
JDBC 2.0 API | |
| |
| |
Introduction | |
| |
| |
Scrollable Result Sets | |
| |
| |
Hints for the JDBC Driver | |
| |
| |
Updatable Result Sets | |
| |
| |
Result Set Sensitivity | |
| |
| |
Execution of Batches | |
| |
| |
SQL:1999 Data Types | |
| |
| |
BLOBs and CLOBs | |
| |
| |
Arrays | |
| |
| |
REF Type | |
| |
| |
Distinct User-Defined Data Types | |
| |
| |
Structured User-Defined Data Types | |
| |
| |
Java Objects in the Database | |
| |
| |
Customizing SQL Types | |
| |
| |
JDBC 2.0 Optional Package API | |
| |
| |
Implementation of the JDBC 2.0 API | |
| |
| |
Chapter Summary | |
| |
| |
Java Blend | |
| |
| |
Introduction | |
| |
| |
Java Blend Architecture | |
| |
| |
Mapping between the Models | |
| |
| |
Simple Tables | |
| |
| |
One-to-Many Relationships | |
| |
| |
Many-to-Many Relationships | |
| |
| |
Subtypes | |
| |
| |
Building a Java Blend Application | |
| |
| |
Creating the Mapping: Database to Java | |
| |
| |
Writing OQL Queries | |
| |
| |
The preprocess Command | |
| |
| |
The Database Class | |
| |
| |
The Transaction Class | |
| |
| |
Writing Our Applications | |
| |
| |
Additional Java Blend Features | |
| |
| |
Optimistic Concurrency Control | |
| |
| |
Prefetch | |
| |
| |
Object Caching | |
| |
| |
ODMG | |
| |
| |
Language-Independent Specifications | |
| |
| |
The Java Binding for ODMG | |
| |
| |
How Java Blend Relates to ODMG 2.0 | |
| |
| |
Other Products That Support ODMG 2.0 | |
| |
| |
Chapter Summary | |
| |
| |
GUI Java Application Builders | |
| |
| |
Introduction | |
| |
| |
Why Use a GUI Application Builder for Java? | |
| |
| |
PowerJ, JDeveloper, and Visual J++ | |
| |
| |
PowerJ by Sybase | |
| |
| |
JDeveloper by Oracle | |
| |
| |
Visual J++ by Microsoft | |
| |
| |
Other Products | |
| |
| |
Chapter Summary | |
| |
| |
Future Developments and Standards Processing | |
| |
| |
Introduction | |
| |
| |
Starting the New Millennium | |
| |
| |
The More Distant Future | |
| |
| |
Standards Processing of Java, JDBC, and SQLJ Technologies | |
| |
| |
Less Formal Standardization | |
| |
| |
Acceptance, Implementation, and Wide Use | |
| |
| |
Chapter Summary | |
| |
| |
A Final Word | |
| |
| |
Relevant Standards Bodies | |
| |
| |
Introduction | |
| |
| |
Contacting ISO | |
| |
| |
Selected National Standards Bodies | |
| |
| |
Purchasing Standards Electronically | |
| |
| |
Database Schema Used in Our Example | |
| |
| |
Introduction | |
| |
| |
The movies Table | |
| |
| |
The awards Table | |
| |
| |
The votes Table | |
| |
| |
The movies_in_stock Table | |
| |
| |
The movie_stars Table | |
| |
| |
Movie and Vote Classes | |
| |
| |
Introduction | |
| |
| |
The Movie Class | |
| |
| |
The Vote Class | |
| |
| |
The VoteOutOfRange Exception Class | |
| |
| |
SQL/PSM Syntax | |
| |
| |
Introduction | |
| |
| |
SQL PSM Syntax | |
| |
| |
SQLJ Part 0 Syntax | |
| |
| |
Introduction | |
| |
| |
Names and Identifiers | |
| |
| |
[host expression list] | |
| |
| |
[parameter mode] | |
| |
| |
[with clause] | |
| |
| |
[implements clause] | |
| |
| |
[SQLJ clause] | |
| |
| |
[connection declaration clause] | |
| |
| |
[iterator declaration clause] | |
| |
| |
[positioned iterator] | |
| |
| |
[named iterator] | |
| |
| |
[executable clause] | |
| |
| |
[context clause] | |
| |
| |
[statement clause] | |
| |
| |
[sql clause] | |
| |
| |
[positioned sql clause] | |
| |
| |
[select into clause] | |
| |
| |
[fetch clause] | |
| |
| |
[set statement clause] | |
| |
| |
[commit clause] | |
| |
| |
[rollback clause] | |
| |
| |
[set transaction clause] | |
| |
| |
[procedure clause] | |
| |
| |
[assignment clause] | |
| |
| |
[query clause] | |
| |
| |
[function clause] | |
| |
| |
[iterator conversion clause] | |
| |
| |
SQL blocks | |
| |
| |
SQLJ Part 1 Syntax | |
| |
| |
Introduction | |
| |
| |
Names and Identifiers | |
| |
| |
SQL-Java Paths | |
| |
| |
SQLJ Procedures | |
| |
| |
DDL Statements | |
| |
| |
Create Procedure/Function Statement | |
| |
| |
Drop Procedure/Function Statement | |
| |
| |
Grant Statement | |
| |
| |
Revoke Statement | |
| |
| |
Deployment Descriptor Files | |
| |
| |
SQL UDT Syntax | |
| |
| |
Introduction | |
| |
| |
SQL User-Defined Type Syntax | |
| |
| |
SQLJ Part 2 Syntax | |
| |
| |
Introduction | |
| |
| |
Names and Identifiers | |
| |
| |
DDL Statements | |
| |
| |
Create Type Statement | |
| |
| |
Create Ordering Statement | |
| |
| |
Drop Type Statement | |
| |
| |
SQLJ Member References | |
| |
| |
SQLJ Method Call | |
| |
| |
Deployment Descriptor Files | |
| |
| |
The PlayingCard Classes | |
| |
| |
Introduction | |
| |
| |
The PlayingCard Class | |
| |
| |
The PlayingCardAceLow Class | |
| |
| |
The PlayingCardGui Class | |
| |
| |
The PlayingCardEnum Class | |
| |
| |
The Deck Class | |
| |
| |
Index | |
| |
| |
About the Authors | |
| |
| |
Oracle JDeveloper Suite 2.0 License Agreement | |
| |
| |
Sybase, Inc. Evaluation License Agreement | |
| |
| |
About the CD-ROM | |