[ 
https://issues.apache.org/jira/browse/DERBY-3313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12559182#action_12559182
 ] 

Kristian Waagan commented on DERBY-3313:
----------------------------------------

Thank you for your interest in this issue Bryan!

A logical entity is a wrapper around a "physical" entity. It is a mechanism to 
avoid closing the physical entity when a user asks to close the object he/she 
has a reference to. You also need to make sure that the user can't obtain a 
reference to the physical entity after the logical entity has been closed. In 
many scenarios this can be fatal, for instance that different worker threads in 
an application server get in each others way.

The logical entity concept already exists in the driver, for instance for 
connections (used when connections are pooled). I have however introduced it 
for prepared statements. Oversimplified, the only thing it needs to do is 
forward all calls to the physical prepared statement and possibly execute some 
special logic on close. In this case, it is putting the physical prepared 
statement into the cache if appropriate. The logical entity will also 
release/nullify any references to its physical entity.

One physical entity will typically do work for several logical entities during 
its lifespan, but at different times (non-overlapping). Further, a logical 
entity is typically a lot cheaper to instantiate than a physical entity.
An illustration of this is the statement cache in the client driver. Instead of 
going over the network to the server and re-prepare a statement there, you can 
simply wrap the existing (physical) prepared statement in the client driver. 
You save time spent in the network and time/work on the server. The actual 
benefit from such a cache is of course highly dependent on the application's 
usage of prepared statements.


Hope this made sense, if not, ask again!

> JDBC client driver statement cache
> ----------------------------------
>
>                 Key: DERBY-3313
>                 URL: https://issues.apache.org/jira/browse/DERBY-3313
>             Project: Derby
>          Issue Type: New Feature
>          Components: JDBC, Network Client
>    Affects Versions: 10.4.0.0
>            Reporter: Kristian Waagan
>            Assignee: Kristian Waagan
>             Fix For: 10.4.0.0
>
>         Attachments: derby-3313-1a-early_prototype.diff, 
> derby-3313-1a-early_prototype.stat, JDBCClientStatementCacheOverview.txt
>
>
> A statement cache in the JDBC client driver will help increase performance in 
> certain scenarios, for instance some multi-tier systems using connection 
> pooling.
> Please consult the comments and documents attached to this issue for more 
> information.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to