public class GrailsHibernateTemplate
extends java.lang.Object
implements org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplate
| Modifier and Type | Class and Description |
|---|---|
protected class |
GrailsHibernateTemplate.CloseSuppressingInvocationHandler
Invocation handler that suppresses close calls on Hibernate Sessions.
|
static interface |
GrailsHibernateTemplate.HibernateCallback<T> |
| Modifier and Type | Field and Description |
|---|---|
protected boolean |
allowCreate |
protected boolean |
cacheQueries |
protected boolean |
checkWriteOperations |
protected boolean |
exposeNativeSession |
static int |
FLUSH_ALWAYS
Flushing before every query statement is rarely necessary.
|
static int |
FLUSH_AUTO
Automatic flushing is the default mode for a Hibernate Session.
|
static int |
FLUSH_COMMIT
Flushing at commit only is intended for units of work where no
intermediate flushing is desired, not even for find operations
that might involve already modified instances.
|
static int |
FLUSH_EAGER
Eager flushing leads to immediate synchronization with the database,
even if in a transaction.
|
static int |
FLUSH_NEVER
Never flush is a good strategy for read-only units of work.
|
protected int |
flushMode |
protected org.springframework.jdbc.support.SQLExceptionTranslator |
jdbcExceptionTranslator |
protected org.hibernate.SessionFactory |
sessionFactory |
| Modifier | Constructor and Description |
|---|---|
protected |
GrailsHibernateTemplate() |
|
GrailsHibernateTemplate(org.hibernate.SessionFactory sessionFactory) |
|
GrailsHibernateTemplate(org.hibernate.SessionFactory sessionFactory,
org.codehaus.groovy.grails.commons.GrailsApplication application) |
|
GrailsHibernateTemplate(org.hibernate.SessionFactory sessionFactory,
org.codehaus.groovy.grails.commons.GrailsApplication application,
int defaultFlushMode) |
| Modifier and Type | Method and Description |
|---|---|
protected org.hibernate.FlushMode |
applyFlushMode(org.hibernate.Session session,
boolean existingTransaction)
Apply the flush mode that's been specified for this accessor to the given Session.
|
void |
applySettings(org.hibernate.Criteria criteria) |
void |
applySettings(org.hibernate.Query query) |
void |
clear() |
boolean |
contains(java.lang.Object entity) |
protected org.springframework.dao.DataAccessException |
convertHibernateAccessException(org.hibernate.HibernateException ex) |
protected org.springframework.dao.DataAccessException |
convertJdbcAccessException(org.hibernate.JDBCException ex,
org.springframework.jdbc.support.SQLExceptionTranslator translator) |
protected org.hibernate.Session |
createSessionProxy(org.hibernate.Session session)
Create a close-suppressing proxy for the given Hibernate Session.
|
void |
delete(java.lang.Object entity) |
void |
deleteAll(java.util.Collection<?> objects) |
protected <T> T |
doExecute(GrailsHibernateTemplate.HibernateCallback<T> action,
boolean enforceNativeSession)
Execute the action specified by the given action object within a Session.
|
void |
evict(java.lang.Object entity) |
<T> T |
execute(GrailsHibernateTemplate.HibernateCallback<T> action) |
java.util.List<?> |
executeFind(GrailsHibernateTemplate.HibernateCallback<?> action) |
void |
flush() |
void |
flush(java.lang.Object entity) |
protected void |
flushIfNecessary(org.hibernate.Session session,
boolean existingTransaction) |
<T> T |
get(java.lang.Class<T> entityClass,
java.io.Serializable id) |
<T> T |
get(java.lang.Class<T> entityClass,
java.io.Serializable id,
org.hibernate.LockMode mode) |
int |
getFlushMode()
Return if a flush should be forced after executing the callback code.
|
protected java.util.Collection |
getIterableAsCollection(java.lang.Iterable objects) |
protected org.hibernate.Session |
getSession() |
org.hibernate.SessionFactory |
getSessionFactory() |
boolean |
isApplyFlushModeOnlyToNonExistingTransactions() |
boolean |
isCacheQueries() |
boolean |
isExposeNativeSession() |
boolean |
isOsivReadOnly() |
protected boolean |
isSessionTransactional(org.hibernate.Session session) |
<T> T |
load(java.lang.Class<T> entityClass,
java.io.Serializable id) |
<T> java.util.List<T> |
loadAll(java.lang.Class<T> entityClass) |
<T> T |
lock(java.lang.Class<T> entityClass,
java.io.Serializable id,
org.hibernate.LockMode lockMode) |
void |
lock(java.lang.Object entity,
org.hibernate.LockMode lockMode) |
protected void |
prepareCriteria(org.hibernate.Criteria criteria)
Prepare the given Criteria object, applying cache settings and/or a
transaction timeout.
|
protected void |
prepareQuery(org.hibernate.Query query)
Prepare the given Query object, applying cache settings and/or a
transaction timeout.
|
void |
refresh(java.lang.Object entity) |
void |
refresh(java.lang.Object entity,
org.hibernate.LockMode lockMode) |
java.io.Serializable |
save(java.lang.Object o) |
void |
setApplyFlushModeOnlyToNonExistingTransactions(boolean applyFlushModeOnlyToNonExistingTransactions) |
void |
setCacheQueries(boolean cacheQueries) |
void |
setExposeNativeSession(boolean exposeNativeSession) |
void |
setFlushMode(int flushMode)
Set the flush behavior to one of the constants in this class.
|
void |
setOsivReadOnly(boolean osivReadOnly) |
protected boolean |
shouldPassReadOnlyToHibernate() |
protected boolean exposeNativeSession
protected boolean cacheQueries
protected boolean allowCreate
protected boolean checkWriteOperations
protected org.hibernate.SessionFactory sessionFactory
protected org.springframework.jdbc.support.SQLExceptionTranslator jdbcExceptionTranslator
protected int flushMode
public static final int FLUSH_NEVER
In case of an existing Session, FLUSH_NEVER will turn the flush mode to NEVER for the scope of the current operation, resetting the previous flush mode afterwards.
setFlushMode(int),
Constant Field Valuespublic static final int FLUSH_AUTO
In case of an existing Session, FLUSH_AUTO will participate in the existing flush mode, not modifying it for the current operation. This in particular means that this setting will not modify an existing flush mode NEVER, in contrast to FLUSH_EAGER.
setFlushMode(int),
Constant Field Valuespublic static final int FLUSH_EAGER
In case of an existing Session, FLUSH_EAGER will turn the flush mode to AUTO for the scope of the current operation and issue a flush at the end, resetting the previous flush mode afterwards.
setFlushMode(int),
Constant Field Valuespublic static final int FLUSH_COMMIT
In case of an existing Session, FLUSH_COMMIT will turn the flush mode to COMMIT for the scope of the current operation, resetting the previous flush mode afterwards. The only exception is an existing flush mode NEVER, which will not be modified through this setting.
setFlushMode(int),
Constant Field Valuespublic static final int FLUSH_ALWAYS
In case of an existing Session, FLUSH_ALWAYS will turn the flush mode to ALWAYS for the scope of the current operation, resetting the previous flush mode afterwards.
setFlushMode(int),
Constant Field Valuesprotected GrailsHibernateTemplate()
public GrailsHibernateTemplate(org.hibernate.SessionFactory sessionFactory)
public GrailsHibernateTemplate(org.hibernate.SessionFactory sessionFactory,
org.codehaus.groovy.grails.commons.GrailsApplication application)
public GrailsHibernateTemplate(org.hibernate.SessionFactory sessionFactory,
org.codehaus.groovy.grails.commons.GrailsApplication application,
int defaultFlushMode)
public org.hibernate.SessionFactory getSessionFactory()
getSessionFactory in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplatepublic void applySettings(org.hibernate.Query query)
public void applySettings(org.hibernate.Criteria criteria)
public void setCacheQueries(boolean cacheQueries)
public boolean isCacheQueries()
public <T> T execute(GrailsHibernateTemplate.HibernateCallback<T> action) throws org.springframework.dao.DataAccessException
org.springframework.dao.DataAccessExceptionpublic java.util.List<?> executeFind(GrailsHibernateTemplate.HibernateCallback<?> action) throws org.springframework.dao.DataAccessException
org.springframework.dao.DataAccessExceptionprotected boolean shouldPassReadOnlyToHibernate()
public boolean isOsivReadOnly()
public void setOsivReadOnly(boolean osivReadOnly)
protected <T> T doExecute(GrailsHibernateTemplate.HibernateCallback<T> action, boolean enforceNativeSession) throws org.springframework.dao.DataAccessException
action - callback object that specifies the Hibernate actionenforceNativeSession - whether to enforce exposure of the native Hibernate Session to callback codenullorg.springframework.dao.DataAccessException - in case of Hibernate errorsprotected boolean isSessionTransactional(org.hibernate.Session session)
protected org.hibernate.Session getSession()
protected org.hibernate.Session createSessionProxy(org.hibernate.Session session)
session - the Hibernate Session to create a proxy forSession.close(),
prepareQuery(org.hibernate.Query),
prepareCriteria(org.hibernate.Criteria)public <T> T get(java.lang.Class<T> entityClass,
java.io.Serializable id)
throws org.springframework.dao.DataAccessException
get in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic <T> T get(java.lang.Class<T> entityClass,
java.io.Serializable id,
org.hibernate.LockMode mode)
get in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplatepublic void delete(java.lang.Object entity)
throws org.springframework.dao.DataAccessException
delete in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic void flush(java.lang.Object entity)
throws org.springframework.dao.DataAccessException
org.springframework.dao.DataAccessExceptionpublic <T> T load(java.lang.Class<T> entityClass,
java.io.Serializable id)
throws org.springframework.dao.DataAccessException
load in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic <T> T lock(java.lang.Class<T> entityClass,
java.io.Serializable id,
org.hibernate.LockMode lockMode)
throws org.springframework.dao.DataAccessException
org.springframework.dao.DataAccessExceptionpublic <T> java.util.List<T> loadAll(java.lang.Class<T> entityClass)
throws org.springframework.dao.DataAccessException
org.springframework.dao.DataAccessExceptionpublic boolean contains(java.lang.Object entity)
throws org.springframework.dao.DataAccessException
contains in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic void evict(java.lang.Object entity)
throws org.springframework.dao.DataAccessException
evict in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic void lock(java.lang.Object entity,
org.hibernate.LockMode lockMode)
throws org.springframework.dao.DataAccessException
lock in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic void refresh(java.lang.Object entity)
throws org.springframework.dao.DataAccessException
refresh in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateorg.springframework.dao.DataAccessExceptionpublic void refresh(java.lang.Object entity,
org.hibernate.LockMode lockMode)
throws org.springframework.dao.DataAccessException
org.springframework.dao.DataAccessExceptionpublic void setExposeNativeSession(boolean exposeNativeSession)
public boolean isExposeNativeSession()
protected void prepareQuery(org.hibernate.Query query)
query - the Query object to prepareprotected void prepareCriteria(org.hibernate.Criteria criteria)
criteria - the Criteria object to preparepublic void setFlushMode(int flushMode)
setFlushMode in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateFLUSH_AUTOpublic int getFlushMode()
getFlushMode in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateprotected org.hibernate.FlushMode applyFlushMode(org.hibernate.Session session,
boolean existingTransaction)
session - the current Hibernate SessionexistingTransaction - if executing within an existing transactionnull if nonesetFlushMode(int),
Session.setFlushMode(org.hibernate.FlushMode)protected void flushIfNecessary(org.hibernate.Session session,
boolean existingTransaction)
throws org.hibernate.HibernateException
org.hibernate.HibernateExceptionprotected org.springframework.dao.DataAccessException convertHibernateAccessException(org.hibernate.HibernateException ex)
protected org.springframework.dao.DataAccessException convertJdbcAccessException(org.hibernate.JDBCException ex,
org.springframework.jdbc.support.SQLExceptionTranslator translator)
public java.io.Serializable save(java.lang.Object o)
save in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplatepublic void flush()
flush in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplatepublic void clear()
clear in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplatepublic void deleteAll(java.util.Collection<?> objects)
deleteAll in interface org.codehaus.groovy.grails.orm.hibernate.IHibernateTemplateprotected java.util.Collection getIterableAsCollection(java.lang.Iterable objects)
public boolean isApplyFlushModeOnlyToNonExistingTransactions()
public void setApplyFlushModeOnlyToNonExistingTransactions(boolean applyFlushModeOnlyToNonExistingTransactions)