com.sun.enterprise.container.common.impl
Class QueryWrapper

java.lang.Object
  extended by com.sun.enterprise.container.common.impl.QueryWrapper
All Implemented Interfaces:
javax.persistence.Query
Direct Known Subclasses:
TypedQueryWrapper

public class QueryWrapper
extends Object
implements javax.persistence.Query

Wrapper class for javax.persistence.Query objects returned from non-transactional access of a container-managed transactional EntityManager. Proxying the Query object prevents the EntityManagerWrapper from having to keep a physical EntityManager open when returning Query objects for non-transactional access. This results in a cleaner implementation of the non-transactional EntityManager behavior and minimizes the amount of time non-transactional EntityManager objects are left open. It is likely that physical EntityManager objects will have heavy-weight resources such as DB connections open even after clear() is called. This is one of the main reasons to minimize the number of open non-transactional EntityManager objects held internally within injected/looked-up container-managed EntityManagers. The EntityManager and Query delegate objects are provided at QueryWrapper creation time. These objects must exist in order for the EntityManagerWrapper to provide the correct exception behavior to the application when a Query is requested. Likewise, the actual delegates must be available to handle the majority of the Query API operations such as performing validation on the various setter parameters. The Query/EntityManager delegates are closed/discarded after each call to getSingleResult/getResultList. A new Query/EntityManager delegate pair is then created lazily the next time the Query delegate is needed. The QueryWrapper maintains a list of all setter operations invoked by the application. These are re-applied in the same order whenever a new Query delegate is created to ensure that the state of the Query delegate object matches what it would have been if there wasn't any QueryWrapper.


Nested Class Summary
protected static class QueryWrapper.QueryType
           
 
Constructor Summary
protected QueryWrapper(javax.persistence.EntityManagerFactory emf, Map emProperties, javax.persistence.EntityManager emDelegate, javax.persistence.Query qDelegate, QueryWrapper.QueryType type, String query, Class resultClass, String resultSetMapping)
           
 
Method Summary
static javax.persistence.Query createNamedQueryWrapper(javax.persistence.EntityManagerFactory emf, Map emProperties, javax.persistence.EntityManager emDelegate, javax.persistence.Query queryDelegate, String name)
           
static javax.persistence.Query createNativeQueryWrapper(javax.persistence.EntityManagerFactory emf, Map emProperties, javax.persistence.EntityManager emDelegate, javax.persistence.Query queryDelegate, String sqlString)
           
static javax.persistence.Query createNativeQueryWrapper(javax.persistence.EntityManagerFactory emf, Map emProperties, javax.persistence.EntityManager emDelegate, javax.persistence.Query queryDelegate, String sqlString, Class resultClass)
           
static javax.persistence.Query createNativeQueryWrapper(javax.persistence.EntityManagerFactory emf, Map emProperties, javax.persistence.EntityManager emDelegate, javax.persistence.Query queryDelegate, String sqlString, String resultSetMapping)
           
protected  javax.persistence.Query createQueryDelegate(QueryWrapper.QueryType queryType, javax.persistence.EntityManager entityManager, String queryString)
           
static javax.persistence.Query createQueryWrapper(javax.persistence.EntityManagerFactory emf, Map emProperties, javax.persistence.EntityManager emDelegate, javax.persistence.Query queryDelegate, String ejbqlString)
           
 int executeUpdate()
           
 int getFirstResult()
           
 javax.persistence.FlushModeType getFlushMode()
           
 Map<String,Object> getHints()
           
 javax.persistence.LockModeType getLockMode()
           
 int getMaxResults()
           
 javax.persistence.Parameter<?> getParameter(int position)
           
<T> javax.persistence.Parameter<T>
getParameter(int position, Class<T> type)
           
 javax.persistence.Parameter<?> getParameter(String name)
           
<T> javax.persistence.Parameter<T>
getParameter(String name, Class<T> type)
           
 Set<javax.persistence.Parameter<?>> getParameters()
           
 Object getParameterValue(int position)
           
<T> T
getParameterValue(javax.persistence.Parameter<T> param)
           
 Object getParameterValue(String name)
           
protected  javax.persistence.Query getQueryDelegate()
           
 List getResultList()
           
 Object getSingleResult()
           
 boolean isBound(javax.persistence.Parameter<?> param)
           
 javax.persistence.Query setFirstResult(int startPosition)
           
 javax.persistence.Query setFlushMode(javax.persistence.FlushModeType flushMode)
           
 javax.persistence.Query setHint(String hintName, Object value)
           
 javax.persistence.Query setLockMode(javax.persistence.LockModeType lockModeType)
           
 javax.persistence.Query setMaxResults(int maxResults)
           
 javax.persistence.Query setParameter(int position, Calendar value, javax.persistence.TemporalType temporalType)
           
 javax.persistence.Query setParameter(int position, Date value, javax.persistence.TemporalType temporalType)
           
 javax.persistence.Query setParameter(int position, Object value)
           
 javax.persistence.Query setParameter(javax.persistence.Parameter<Calendar> param, Calendar value, javax.persistence.TemporalType temporalType)
           
 javax.persistence.Query setParameter(javax.persistence.Parameter<Date> param, Date value, javax.persistence.TemporalType temporalType)
           
<T> javax.persistence.Query
setParameter(javax.persistence.Parameter<T> param, T value)
           
 javax.persistence.Query setParameter(String name, Calendar value, javax.persistence.TemporalType temporalType)
           
 javax.persistence.Query setParameter(String name, Date value, javax.persistence.TemporalType temporalType)
           
 javax.persistence.Query setParameter(String name, Object value)
           
<T> T
unwrap(Class<T> tClass)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryWrapper

protected QueryWrapper(javax.persistence.EntityManagerFactory emf,
                       Map emProperties,
                       javax.persistence.EntityManager emDelegate,
                       javax.persistence.Query qDelegate,
                       QueryWrapper.QueryType type,
                       String query,
                       Class resultClass,
                       String resultSetMapping)
Method Detail

createQueryWrapper

public static javax.persistence.Query createQueryWrapper(javax.persistence.EntityManagerFactory emf,
                                                         Map emProperties,
                                                         javax.persistence.EntityManager emDelegate,
                                                         javax.persistence.Query queryDelegate,
                                                         String ejbqlString)

createNamedQueryWrapper

public static javax.persistence.Query createNamedQueryWrapper(javax.persistence.EntityManagerFactory emf,
                                                              Map emProperties,
                                                              javax.persistence.EntityManager emDelegate,
                                                              javax.persistence.Query queryDelegate,
                                                              String name)

createNativeQueryWrapper

public static javax.persistence.Query createNativeQueryWrapper(javax.persistence.EntityManagerFactory emf,
                                                               Map emProperties,
                                                               javax.persistence.EntityManager emDelegate,
                                                               javax.persistence.Query queryDelegate,
                                                               String sqlString)

createNativeQueryWrapper

public static javax.persistence.Query createNativeQueryWrapper(javax.persistence.EntityManagerFactory emf,
                                                               Map emProperties,
                                                               javax.persistence.EntityManager emDelegate,
                                                               javax.persistence.Query queryDelegate,
                                                               String sqlString,
                                                               Class resultClass)

createNativeQueryWrapper

public static javax.persistence.Query createNativeQueryWrapper(javax.persistence.EntityManagerFactory emf,
                                                               Map emProperties,
                                                               javax.persistence.EntityManager emDelegate,
                                                               javax.persistence.Query queryDelegate,
                                                               String sqlString,
                                                               String resultSetMapping)

getResultList

public List getResultList()
Specified by:
getResultList in interface javax.persistence.Query

getSingleResult

public Object getSingleResult()
Specified by:
getSingleResult in interface javax.persistence.Query

executeUpdate

public int executeUpdate()
Specified by:
executeUpdate in interface javax.persistence.Query

setMaxResults

public javax.persistence.Query setMaxResults(int maxResults)
Specified by:
setMaxResults in interface javax.persistence.Query

getMaxResults

public int getMaxResults()
Specified by:
getMaxResults in interface javax.persistence.Query

setFirstResult

public javax.persistence.Query setFirstResult(int startPosition)
Specified by:
setFirstResult in interface javax.persistence.Query

getFirstResult

public int getFirstResult()
Specified by:
getFirstResult in interface javax.persistence.Query

setHint

public javax.persistence.Query setHint(String hintName,
                                       Object value)
Specified by:
setHint in interface javax.persistence.Query

getHints

public Map<String,Object> getHints()
Specified by:
getHints in interface javax.persistence.Query

setParameter

public <T> javax.persistence.Query setParameter(javax.persistence.Parameter<T> param,
                                                T value)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(javax.persistence.Parameter<Date> param,
                                            Date value,
                                            javax.persistence.TemporalType temporalType)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(javax.persistence.Parameter<Calendar> param,
                                            Calendar value,
                                            javax.persistence.TemporalType temporalType)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(String name,
                                            Object value)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(String name,
                                            Date value,
                                            javax.persistence.TemporalType temporalType)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(String name,
                                            Calendar value,
                                            javax.persistence.TemporalType temporalType)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(int position,
                                            Object value)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(int position,
                                            Date value,
                                            javax.persistence.TemporalType temporalType)
Specified by:
setParameter in interface javax.persistence.Query

setParameter

public javax.persistence.Query setParameter(int position,
                                            Calendar value,
                                            javax.persistence.TemporalType temporalType)
Specified by:
setParameter in interface javax.persistence.Query

getParameters

public Set<javax.persistence.Parameter<?>> getParameters()
Specified by:
getParameters in interface javax.persistence.Query

getParameter

public javax.persistence.Parameter<?> getParameter(String name)
Specified by:
getParameter in interface javax.persistence.Query

getParameter

public <T> javax.persistence.Parameter<T> getParameter(String name,
                                                       Class<T> type)
Specified by:
getParameter in interface javax.persistence.Query

getParameter

public javax.persistence.Parameter<?> getParameter(int position)
Specified by:
getParameter in interface javax.persistence.Query

getParameter

public <T> javax.persistence.Parameter<T> getParameter(int position,
                                                       Class<T> type)
Specified by:
getParameter in interface javax.persistence.Query

isBound

public boolean isBound(javax.persistence.Parameter<?> param)
Specified by:
isBound in interface javax.persistence.Query

getParameterValue

public <T> T getParameterValue(javax.persistence.Parameter<T> param)
Specified by:
getParameterValue in interface javax.persistence.Query

getParameterValue

public Object getParameterValue(String name)
Specified by:
getParameterValue in interface javax.persistence.Query

getParameterValue

public Object getParameterValue(int position)
Specified by:
getParameterValue in interface javax.persistence.Query

setFlushMode

public javax.persistence.Query setFlushMode(javax.persistence.FlushModeType flushMode)
Specified by:
setFlushMode in interface javax.persistence.Query

getFlushMode

public javax.persistence.FlushModeType getFlushMode()
Specified by:
getFlushMode in interface javax.persistence.Query

setLockMode

public javax.persistence.Query setLockMode(javax.persistence.LockModeType lockModeType)
Specified by:
setLockMode in interface javax.persistence.Query

getLockMode

public javax.persistence.LockModeType getLockMode()
Specified by:
getLockMode in interface javax.persistence.Query

unwrap

public <T> T unwrap(Class<T> tClass)
Specified by:
unwrap in interface javax.persistence.Query

getQueryDelegate

protected javax.persistence.Query getQueryDelegate()

createQueryDelegate

protected javax.persistence.Query createQueryDelegate(QueryWrapper.QueryType queryType,
                                                      javax.persistence.EntityManager entityManager,
                                                      String queryString)


Copyright © 2012 GlassFish Community. All Rights Reserved.