Design and Implementation of a Database Programming Language for XML-based Applications
This publication focuses on two main aspects; the seamless integration of XML and persistency concepts into the object-oriented programming language Java. XML is the de facto standard data exchange format between arbitrary applications. There have been many efforts to integrate XML into programming languages reaching from the simple document object model (DOM) to whole XML class generators. These approaches are available in most popular programming languages. The integration of persistency into programming languages has been done by database programming languages as well as by certain new popular frameworks like Hibernate or approaches like EJB. Nevertheless, these approaches suffer from certain limitations concerning in particular transparency and object-orientation. While existing database programming languages integrate the relational model, Hibernate and EJB 3.x does not support polymorphism in general. EJB 2.x does not even support inheritance. In addition, although they try to, the approaches except by some database programming languages are not transparent. In this work, transparency means that arbitrary types may become persistent. Moreover, algorithms remain unchanged whether they are executed on transient or persistent objects. Finally, users can work with persistency on a very high level. Since there are so many currently developed frameworks trying to solve the integration problem of XML and persistency into object-oriented programming languages, the need for a holistic and transparent object-oriented database programming language seems to be there. The starting point of XOBEDBPL, which stands for XML OBjEcts Database Programming Language, is the predecessor project XOBE. XOBE concentrates on the integration of XML objects and XPath as the query language for these objects. The most important feature of XOBE is that each XML operation is statically type checked against the declared XML schema. In XOBEDBPL the XML integration is extended regarding the manipulation of XML objects. Before, XML objects could only be queried but not updated. The static type checking idea is kept and enhanced to include updates. While XOBE's intentions lie on the development of web applications, all objects can remain transient. XOBEDBPL is supposed to deal with persistent objects as well.