> I am writing a term paper about JDBC for a Java programming course I am taking
> and one of the sections of the paper is "competing technologies". My question
[quoted text clipped - 5 lines]
>
> Kevin
Hi. There is no meaningful alternative to JDBC for connecting to DBMSes from Java.
There are higher-level APIs, but they will be using JDBC internally. At the wire level,
the protocol to talk to a DBMS is proprietary to the DBMS. Typically the DBMS vendor
provides a publicly usable native library API. This API is used by type-2 JDBC
drivers. Type-4 (all-java) drivers understand the wire level protocol and the vendor
implements the wire level protocol in Java to implement the JDBC calls. Typically DBMS
vendors provide extensions to JDBC to execute any special functionality that their
wire-level API offers that goes beyond standard JDBC.
As such, there is no value in re-implementing the wire-level protocol for a non-JDBC
API, especially when JDBC is part of the standard that makes Java so productive.
Joe Weinstein at BEA
Jorge Chandra - 06 May 2004 08:44 GMT
> Hi. There is no meaningful alternative to JDBC for connecting to DBMSes from Java.
> There are higher-level APIs, but they will be using JDBC internally.
That is not exactly true. See sqlrelay:
http://sqlrelay.sourceforge.net/
Although not written in Java it has a Java API and it is "JDBC'less".
I'm not sure if it qualifies as a "meaningful alternative to JDBC".
Regards,
Jorge Chandra
Joe Weinstein - 06 May 2004 15:12 GMT
>>Hi. There is no meaningful alternative to JDBC for connecting to DBMSes from Java.
>>There are higher-level APIs, but they will be using JDBC internally.
[quoted text clipped - 4 lines]
> Although not written in Java it has a Java API and it is "JDBC'less".
> I'm not sure if it qualifies as a "meaningful alternative to JDBC".
You are right. I'd never heard of it.
Joe
> Regards,
> Jorge Chandra
> I am writing a term paper about JDBC for a Java programming course I am taking
> and one of the sections of the paper is "competing technologies". My question
[quoted text clipped - 3 lines]
> type at work he said that is not the case. Any thought that anyone might have
> on this would be greatly appreciated. Thanks!
There are a few possible answers, depending on what you mean.
First of all, not all databases are relational, but all commonly used
databases are relational. Non-relational databases won't use JDBC,
since it's built strongly around the relational model. This isn't so
much about competitors to JDBC, as about competitors to relational
databases.
JDBC is practically universal in the relational database space in Java.
There is not, to the best of my knowledge, any existing relational
database access API for Java that is as widespread or that provides
access to as many DBMS options as JDBC... nor is there anything even
close. (There is a specific tool for Oracle called SQLJ that doesn't
appear to be based on JDBC, but I could be wrong about that; and the
tool is specific to the Oracle DBMS.)
If you're looking from a cross-platform perspective, though, then ODBC
certainly competes against JDBC. Much like the object vs. relational
database scenario, though, they have to compete in the context of their
respective language choices. That is, JDBC might be a reason to choose
Java as a language for implementation (it's almost universally
considered superior to ODBC), but Java and ODBC in combination is simply
not a viable choice for deploying a realistic application.
It's also occasionally true in casual usage that "JDBC" is used as a
synonym for "plain JDBC", meaning that software is developed to use JDBC
directly to connect to the database. That is certainly not the only
option, and "plain JDBC" definitely does compete with other
technologies: Oracle TopLink, Hibernate, JDO, EJB-CMP, CocoBase, Castor,
etc. These other options use JDBC as part of their implementation
(excepting some of the more abstract ones like JDO, which as a
specification doesn't rely on JDBC but in practice non-JDBC-based JDO
implementations are not based on relational databases).
The advantage of the latter O/R mapper products listed is that they
provide a higher-level, more object-oriented, and easier way to interact
with the database. A product using these technologies may or may not
also use JDBC directly. Some technologies (e.g., Hibernate) visibly
depend on JDBC and practically encourage dropping down to the JDBC level
for solving some performance bottlenecks. Others (e.g., JDO) make it a
design goal to hide JDBC entirely, such that it's possible to provide
implementations that are based on XML files or object databases, rather
than relational databases; so it's clearly harder to mix them with JDBC.
I'm sure that's more than you wanted to know...

Signature
www.designacourse.com
The Easiest Way to Train Anyone... Anywhere.
Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
Roedy Green - 04 May 2004 18:35 GMT
> Non-relational databases won't use JDBC,
see http://mindprod.com/jgloss/pod.html
The paradigm here is persistent objects, with transactions so you can
roll them back to a previous state if you don't complete a
transaction.
--
Canadian Mind Products, Roedy Green.
Coaching, problem solving, economical contract programming.
See http://mindprod.com/jgloss/jgloss.html for The Java Glossary.
Chris Smith - 04 May 2004 20:22 GMT
> > Non-relational databases won't use JDBC,
>
> see http://mindprod.com/jgloss/pod.html
> The paradigm here is persistent objects, with transactions so you can
> roll them back to a previous state if you don't complete a
> transaction.
Roedy,
You might want to fix "db4o" on that page. That last character is an
"o" as in "object", not a "0" as in the numeral. Fortunately, the
company has purchased the "db40.com" domain and set it up to redirect to
their actual "db4o.com" website, so your link still works.

Signature
www.designacourse.com
The Easiest Way to Train Anyone... Anywhere.
Chris Smith - Lead Software Developer/Technical Trainer
MindIQ Corporation
Carl Rosenberger - 10 May 2004 17:13 GMT
> > see http://mindprod.com/jgloss/pod.html
>
> Roedy,
>
> You might want to fix "db4o" on that page. That last character is an
> "o" as in "object", not a "0" as in the numeral.
Thanks for the correction on your website, Roedy.
I wonder why you think that the name is silly.
db4o is the acronym for
database for objects
d b 4 o
We pronounce it "deebeeforowe".
I would love to hear your suggestions for a better name.
We are considering to go OpenSource this year and this
might be the last reasonable chance to change the name.
We also experience that "db4o" is not ideal. Visiting
customers we often find that they neither know what the
name means nor how to pronounce it.
Carl

Signature
Carl Rosenberger
db4o - database for objects - http://www.db4o.com
Adam Maass - 05 May 2004 07:39 GMT
> Non-relational databases won't use JDBC,
> since it's built strongly around the relational model.
Matisse Software has an object database that uses SQL as its native
query language, and a pretty thorough JDBC driver to complement it.
www.matisse.com
They are, however, the exception that proves the rule.
>There is a specific tool for Oracle called SQLJ that doesn't
> appear to be based on JDBC, but I could be wrong about that; and the
> tool is specific to the Oracle DBMS.
Long ago and far away, Oracle was talking about submitting SQLJ to a
standards body. I don't think that initiative got very far. The initial
implementation relied on JDBC under the covers, though that was
just a convenient reuse of existing technology rather than a hard-wired
requirement. SQLJ has since quietly disappeared.
-- Adam Maass
Martin Winkelbauer - 05 May 2004 09:22 GMT
> > Non-relational databases won't use JDBC,
> > since it's built strongly around the relational model.
[quoted text clipped - 17 lines]
>
> -- Adam Maass
SQLJ has not really disappeared yet.
it's in IBM's S390/zOS - DB2 for example, and rocking hard !
it gives you static SQL (precompiled access packages) for real performance
there
but is a fair bit more complicated to use than JDBC.
regards
Martin
JTDS or JavaTDS. It is a binary stream format for SQL Server.
It can be found at Sourceforge