Database Answers Logo
Toplink Discussion 2

Montreux, Switzerland
I use Toplink for Java. Toplink basically generates dynamic SQL for your
normal "queries" and may also turn that into a stored procedure on the
RDBMS side. The normal SQL mappings are one thing. Need to discuss? A
second thing is a Query object framework where you build up your query
using objects and the framework will generate the dynamic SQL. Here is an
example:

public Vector getTests(Study study) {
   ExpressionBuilder builder = new ExpressionBuilder();
   Expression studyId = builder.get("study").get("oid").equal(study.getOid
());
   ReadAllQuery query = new ReadAllQuery();
   query.setReferenceClass(Test.class);
   query.setSelectionCriteria(studyId);
   return new (Vector) getSession().executeQuery(query));
}

which gets all "Test" objects for a particular "Study" by performing a join
between the study and tests. IOW, return all Tests where aTest.study.oid ==
aStudy.oid.

You can think of this simply as some objects that can generate OO queries
into SQL strings and pass them along to the RDBMS, although Toplink handles
caching, converting to/from objects and so forth. Toplink could also
compile a query or sql string into a stored procedure if I wanted, e.g., I
would give this query a name, tell Toplink to convert it to a stored
procedure, then refer to it by name.

Since it's inefficient to dynamically generate the sql string and have the
RDBMS recompile it every time, Toplink could tell the RDBMS to convert this
sql string to a stored procedure then use this stored procedure reference
via parametrized calls thereafter (for the lifetime of the Toplink object;
it would delete these temporary stored procedures when it shut down).

Toplink also has an execute(aSQLString) method where you can just send a
SQL string directly to the database. This is a "backdoor" that bypasses the
unitOfWork (transaction in object terms) and caching. In general, this will
answer a Vector of "DatabaseRows" or ResultSets. Up to you what you want to
do with it.

I apologize if I failed to answer your question. I wasn't quite sure what
you wanted so I scattershot-ed it. If your question was: "Does Toplink
really SP its queries then use parametrized calls to them going forward?",
to be honest I'd have to go back and look at Toplink's code to see. It
doesn't seem very difficult to do, so I assumed it would. But I'm not 100%
sure. Hmmm.

Incidentally, I was just informed about a new open source OR Java tool
today at http://www.simpleorm.org/. I was planning on looking at it
tonight.

[ Home Page | Ask me a Question | Email | FAQs | History of Databases | Useful Links ]

© IceBreaker WebDesigns 2000