Starting to experiment with fluent API for non-selecting queries. Since I'd 
like to avoid delaying 4.0.M2 release any further, I created a pull request 
instead of committing it to master:

https://github.com/apache/cayenne/pull/64

So now executing SQL will look like this:

int inserted = SQLExec
     .query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (#bind($id), 
#bind($name))")
     .paramsArray(55, "a3")
     .update(context);

or like this:

List<QueryResult> = SQLExec
     .query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (#bind($id), 
#bind($name))")
     .paramsArray(55, "a3")
     .execute(context);

The second form ("execute") is more generic. It is not very useful for this 
simple example. Still need some actual tests that would execute multiple 
statements via a single SQLExec. I know you can do it when calling a stored 
procedure (which would be a separate query), but IIRC most drivers will blow if 
you put multiple SQL statements in a single JDBC PreparedStatement.

Still, I am showing it here with an eye on eventually refactoring 
ObjectContext.performGenericQuery(..) to also return result in a form of 
List<QueryResult> (instead of current ugly QueryResponse).

Comments are welcome.

Andrus


Reply via email to