Moving Beynod JDBC
Server side data acces architectures, Java, JDBC, Hierarchical Data Sets, XML
Url of the conference. http://conferences.oreillynet.com/os2003/
Speakers page of the conference. http://conferences.oreillynet.com/pub/w/23/speakers.html
Demo an application that will demonstrate the use of hds . Every web page is available in multiple formats . The data is obtained declaratively . JDBC/FileAccess knowledge is hidden in reusable parts The most widely used/essential/successful Java API: JDBC . Widely used . Back bone of server side Java success . Small/clean/simple/utilitarian : Very few APIs can claim this Why move, Why Can't I use JDBC directly? . There are a set of applications for which a higher level of abstractions are better suited . SQL embedded in Java . Data sources are hard coded in java . Connections, cursors, statements are explicitly managed by programmers . Transactions are controlled by programmers making it difficult to compose business logic So What alternatives have I got: Existing sever side java data abstractions . JDBC - A unified abstraction for relational databases . Rowsets - A unified abstraction for relational content . Connector Architectures . JDO - Java Data Objects . Container managed Entity Beans New kid on the block: What are hierarchical data sets . What is a hierarchical data set: An XML definition . Applying JSP and XSL to take advantage of hierarchical data sets . Language bindings to hierarchical data sets . XML Specification to retrieve a hierarchical data sets How are Hierarchical data sets produced: Universal Data Definition (UDD) . A pre-designed set of relational adapters . A declarative mechanism for invoking the relational adapters . Configuration entries to compose a series of relational adapters into a hierarchical dataset . An example of such a data definition How do you consume Hierarchical Data Sets . You can get them programmatically via a Java API . You can get them via a website served by Tomcat . You can reap the data in any format Hierarchical data set formats . Classic-XML . Object-XML . Text . Excel .Java . C# . VB . Action Script (For such things as FlashMX) Interoperability of Hierarchical data sets . Can be accessed by any language . Can allow disparate applications to communicate together . Data is communicated in any format including XML . Language bindings can exist for type safety Hierarchical data sets are web friendly . They can be obtained via the web infrastructure . Any front end technology can use them . An example is FlashMX can consume these Hierarchical Data Sets directly Hierarchical data sets are consumer centric . JDBC is specific and producer centric . Hierarchical data sets are composed for a specific client such as a web page . Hence they are consumer centric . By additionally applying XSLT they come closest to the needs of an end consumer Hierarchical data sets are infosets . Relational sets such as row sets are relational and essentially data . Hierarchical data sets organizes the above data in a meaningful way . And hence the "meaninfulness" via a parent/child relationship of data is considered "informational" and hence the name infoset Hierarchical data sets can be efficient . Hierarchical data sets can stay native untile required otherwise . Hierarchical data sets can incorporate cursors . Hierarchcial data sets can be lazy loaded . Hierarchical data sets can be iterated either forward only or random at each node level Hierarchical data sets are standardizable . Data definition for a hierarchical data sets can be standardized . Any language can execute these definitions to yield Hierarchical data sets . Once standardized such high end systems as Websites, reporting, charting can use these UDDS as if we use Stored Procs today either via programming or REST Hierarchical data sets as the corporate middle tier . Hierarchical data sets are tied to a name . These names can be published for discovery . When these names are invoked via the web you will receive XML data . Can substitute/supplement such middle tier technologies as SessionBeans/Stored Procedures etc. Hierarchcial data sets and REST . Hierarchical data sets can be tied to a URI . Invocation of the URL will yield an XML data set . The next state of a document is inherently available in the current document itself . Each REST URI is tied to an Object with a single method . Single objects are better for load balancing, transactions, interceptions in general . Single objects also better support migrating functionality Hierarchical data sets are XML friendly . Can be retrieved as varieties of XML : classic, object etc. . Can be transformed using XSLT . Can be transformed using Java and JSP where it is difficult or unnatural for XSLT . Hierarchical data sets and SOAP . Hierarchical data sets can be exposed as SOAP . SOAP services are hence constructed declaratively Java middle tier is well poised to yield hierarchical data sets . InfoSets explained . Declarative access to InfoSets (UDDs) . Comparing InfoSets to .Nets DataSets . Applying InfoSets to the web platform Applying InfoSets to dramatically reduce the complexity ApplicationServers . Transparent Data Pipelines - AppServers seen as producers/consumers of InfoSets . Using InfoSets to convert B2C to SOAP based B2B applications Other applications of UDD (Universal Data Definitions) . As a data supplier to a reporting engine such as Oracle and Crystal reports . As a data supplier and transformer for a charting engine such as PopCharts What do you mean by moving beyond JDBC? . Data source independence similar to rowsets . Externalized SQL from java . Data gathered declaratively using a definition as opposed to using the API . The final output of a data operation is hierarchical data set not relational