org.springframework.orm.hibernate
Class HibernateTemplate

java.lang.Object
  extended byorg.springframework.orm.hibernate.HibernateAccessor
      extended byorg.springframework.orm.hibernate.HibernateTemplate
All Implemented Interfaces:
HibernateOperations, InitializingBean

public class HibernateTemplate
extends HibernateAccessor
implements HibernateOperations

Helper class that simplifies Hibernate data access code, and converts checked HibernateExceptions into unchecked DataAccessExceptions, following the org.springframework.dao exception hierarchy. Uses the same SQLExceptionTranslator mechanism as JdbcTemplate.

Typically used to implement data access or business logic services that use Hibernate within their implementation but are Hibernate-agnostic in their interface. The latter or code calling the latter only have to deal with domain objects, query objects, and org.springframework.dao exceptions.

The central method is "execute", supporting Hibernate code implementing the HibernateCallback interface. It provides Hibernate Session handling such that neither the HibernateCallback implementation nor the calling code needs to explicitly care about retrieving/closing Hibernate Sessions, or handling Session lifecycle exceptions. For typical single step actions, there are various convenience methods (find, load, saveOrUpdate, delete).

Can be used within a service implementation via direct instantiation with a SessionFactory reference, or get prepared in an application context and given to services as bean reference. Note: The SessionFactory should always be configured as bean in the application context, in the first case given to the service directly, in the second case to the prepared template.

This class can be considered a programmatic alternative to HibernateInterceptor. The major advantage is its straightforwardness, the major disadvantage that no checked application exceptions can get thrown from within data access code. Such checks and the actual throwing of such exceptions can often be deferred to after callback execution, though.

Note that even if HibernateTransactionManager is used for transaction demarcation in higher-level services, all those services above the data access layer don't need need to be Hibernate-aware. Setting such a special PlatformTransactionManager is a configuration issue: For example, switching to JTA is just a matter of Spring configuration (use JtaTransactionManager instead) that does not affect application code.

LocalSessionFactoryBean is the preferred way of obtaining a reference to a specific Hibernate SessionFactory, at least in a non-EJB environment. Alternatively, use a JndiObjectFactoryBean to fetch a SessionFactory from JNDI (possibly set up via a JCA Connector).

Note that operations that return an Iterator (i.e. iterate) are supposed to be used within Spring-driven or JTA-driven transactions (with HibernateTransactionManager, JtaTransactionManager, or EJB CMT). Else, the Iterator won't be able to read results from its ResultSet anymore, as the underlying Hibernate Session will already have been closed.

Lazy loading will also just work with an open Hibernate Session, either within a transaction or within OpenSessionInViewFilter/Interceptor. Furthermore, some operations just make sense within transactions, for example: contains, evict, lock, flush, clear.

Note: Spring's Hibernate support requires Hibernate 2.1 (as of Spring 1.0).

Since:
02.05.2003
Author:
Juergen Hoeller
See Also:
HibernateAccessor.setSessionFactory(net.sf.hibernate.SessionFactory), HibernateAccessor.setJdbcExceptionTranslator(org.springframework.jdbc.support.SQLExceptionTranslator), HibernateCallback, Session, HibernateInterceptor, LocalSessionFactoryBean, JndiObjectFactoryBean, SQLExceptionTranslator, HibernateTransactionManager, JtaTransactionManager, OpenSessionInViewFilter, OpenSessionInViewInterceptor

Field Summary
 
Fields inherited from class org.springframework.orm.hibernate.HibernateAccessor
FLUSH_AUTO, FLUSH_EAGER, FLUSH_NEVER, logger
 
Constructor Summary
HibernateTemplate()
          Create a new HibernateTemplate instance.
HibernateTemplate(SessionFactory sessionFactory)
          Create a new HibernateTemplate instance.
HibernateTemplate(SessionFactory sessionFactory, boolean allowCreate)
          Create a new HibernateTemplate instance.
 
Method Summary
protected  void applyNamedParameterToQuery(Query queryObject, String paramName, Object value, Type type)
          Apply the given name parameter to the given Query object.
protected  void checkWriteOperationAllowed(Session session)
          Check whether write operations are allowed on the given Session.
 void clear()
          Remove all objects from the Session cache, and cancel all pending saves, updates and deletes.
 void closeIterator(Iterator it)
          Close an Iterator created by iterate operations immediately, instead of waiting until the session is closed or disconnected.
 boolean contains(Object entity)
          Check whether the given object is in the Session cache.
 Criteria createCriteria(Session session, Class entityClass)
          Deprecated. Use session.createCriteria instead, which will now automatically apply the template's query cache settings and the transaction timeout (through the use of a special Session proxy).
 Query createQuery(Session session, String queryString)
          Deprecated. Use session.createQuery instead, which will now automatically apply the template's query cache settings and the transaction timeout (through the use of a special Session proxy).
protected  Session createSessionProxy(Session session)
          Create a close-suppressing proxy for the given Hibernate Session.
 void delete(Object entity)
          Delete the given persistent instance.
 void delete(Object entity, LockMode lockMode)
          Delete the given persistent instance.
 int delete(String queryString)
          Delete all objects returned by the query.
 int delete(String queryString, Object[] values, Type[] types)
          Delete all objects returned by the query.
 int delete(String queryString, Object value, Type type)
          Delete all objects returned by the query.
 void deleteAll(Collection entities)
          Delete all given persistent instances.
 void evict(Object entity)
          Remove the given object from the Session cache.
 Object execute(HibernateCallback action)
          Execute the action specified by the given action object within a Session.
 Object execute(HibernateCallback action, boolean exposeNativeSession)
          Execute the action specified by the given action object within a Session.
 List executeFind(HibernateCallback action)
          Execute the specified action assuming that the result object is a List.
 List find(String queryString)
          Execute a query for persistent instances.
 List find(String queryString, Object value)
          Execute a query for persistent instances, binding one value to a "?"
 List find(String queryString, Object[] values)
          Execute a query for persistent instances, binding a number of values to "?"
 List find(String queryString, Object[] values, Type[] types)
          Execute a query for persistent instances, binding a number of values to "?"
 List find(String queryString, Object value, Type type)
          Execute a query for persistent instances, binding one value to a "?"
 List findByNamedParam(String queryString, String[] paramNames, Object[] values)
          Execute a query for persistent instances, binding a number of values to ":" named parameters in the query string.
 List findByNamedParam(String queryString, String[] paramNames, Object[] values, Type[] types)
          Execute a query for persistent instances, binding a number of values to ":" named parameters in the query string.
 List findByNamedParam(String queryString, String paramName, Object value)
          Execute a query for persistent instances, binding one value to a ":" named parameter in the query string.
 List findByNamedParam(String queryString, String paramName, Object value, Type type)
          Execute a query for persistent instances, binding one value to a ":" named parameter in the query string.
 List findByNamedQuery(String queryName)
          Execute a named query for persistent instances.
 List findByNamedQuery(String queryName, Object value)
          Execute a named query for persistent instances, binding one value to a "?"
 List findByNamedQuery(String queryName, Object[] values)
          Execute a named query for persistent instances, binding a number of values to "?"
 List findByNamedQuery(String queryName, Object[] values, Type[] types)
          Execute a named query for persistent instances, binding a number of values to "?"
 List findByNamedQuery(String queryName, Object value, Type type)
          Execute a named query for persistent instances, binding one value to a "?"
 List findByNamedQuery(String queryName, String[] paramNames, Object[] values)
          Deprecated. in favor of findByNamedQueryAndNamedParam, to avoid parameter overloading ambiguities
 List findByNamedQuery(String queryName, String[] paramNames, Object[] values, Type[] types)
          Deprecated. in favor of findByNamedQueryAndNamedParam, to avoid parameter overloading ambiguities
 List findByNamedQuery(String queryName, String paramName, Object value)
          Deprecated. in favor of findByNamedQueryAndNamedParam, to avoid parameter overloading ambiguities
 List findByNamedQuery(String queryName, String paramName, Object value, Type type)
          Deprecated. in favor of findByNamedQueryAndNamedParam, to avoid parameter overloading ambiguities
 List findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values)
          Execute a named query for persistent instances, binding a number of values to ":" named parameters in the query string.
 List findByNamedQueryAndNamedParam(String queryName, String[] paramNames, Object[] values, Type[] types)
          Execute a named query for persistent instances, binding a number of values to ":" named parameters in the query string.
 List findByNamedQueryAndNamedParam(String queryName, String paramName, Object value)
          Execute a named query for persistent instances, binding one value to a ":" named parameter in the query string.
 List findByNamedQueryAndNamedParam(String queryName, String paramName, Object value, Type type)
          Execute a named query for persistent instances, binding one value to a ":" named parameter in the query string.
 List findByNamedQueryAndValueBean(String queryName, Object valueBean)
          Execute a named query for persistent instances, binding the properties of the given bean to ":" named parameters in the query string.
 List findByValueBean(String queryString, Object valueBean)
          Execute a query for persistent instances, binding the properties of the given bean to named parameters in the query string.
 void flush()
          Flush all pending saves, updates and deletes to the database.
 Object get(Class entityClass, Serializable id)
          Return the persistent instance of the given entity class with the given identifier, or null if not found.
 Object get(Class entityClass, Serializable id, LockMode lockMode)
          Return the persistent instance of the given entity class with the given identifier, or null if not found.
 Query getNamedQuery(Session session, String queryName)
          Deprecated. Use session.getNamedQuery instead, which will now automatically apply the template's query cache settings and the transaction timeout (through the use of a special Session proxy).
 String getQueryCacheRegion()
          Return the name of the cache region for queries executed by this template.
protected  Session getSession()
          Return a Session for use by this template.
 void initialize(Object proxy)
          Force initialization of a Hibernate proxy or persistent collection.
 boolean isAllowCreate()
          Return if a new Session should be created if no thread-bound found.
 boolean isAlwaysUseNewSession()
          Return whether to always use a new Hibernate Session for this template.
 boolean isCacheQueries()
          Return whether to cache all queries executed by this template.
 boolean isCheckWriteOperations()
          Return whether to check that the Hibernate Session is not in read-only mode in case of write operations (save/update/delete).
 boolean isExposeNativeSession()
          Return whether to expose the native Hibernate Session to HibernateCallback code, or rather a Session proxy.
 Iterator iterate(String queryString)
          Execute a query for persistent instances.
 Iterator iterate(String queryString, Object value)
          Execute a query for persistent instances, binding one value to a "?"
 Iterator iterate(String queryString, Object[] values)
          Execute a query for persistent instances, binding a number of values to "?"
 Iterator iterate(String queryString, Object[] values, Type[] types)
          Execute a query for persistent instances, binding a number of values to "?"
 Iterator iterate(String queryString, Object value, Type type)
          Execute a query for persistent instances, binding one value to a "?"
 Object load(Class entityClass, Serializable id)
          Return the persistent instance of the given entity class with the given identifier, throwing an exception if not found.
 Object load(Class entityClass, Serializable id, LockMode lockMode)
          Return the persistent instance of the given entity class with the given identifier, throwing an exception if not found.
 void load(Object entity, Serializable id)
          Load the persistent instance with the given identifier into the given object, throwing an exception if not found.
 List loadAll(Class entityClass)
          Return all persistent instances of the given entity class.
 void lock(Object entity, LockMode lockMode)
          Obtain the specified lock level upon the given object, implicitly checking whether the corresponding database entry still exists (throwing an OptimisticLockingFailureException if not found).
protected  void prepareCriteria(Criteria criteria)
          Prepare the given Criteria object, applying cache settings and/or a transaction timeout.
protected  void prepareQuery(Query queryObject)
          Prepare the given Query object, applying cache settings and/or a transaction timeout.
 void refresh(Object entity)
          Re-read the state of the given persistent instance.
 void refresh(Object entity, LockMode lockMode)
          Re-read the state of the given persistent instance.
 Serializable save(Object entity)
          Persist the given transient instance.
 void save(Object entity, Serializable id)
          Persist the given transient instance with the given identifier.
 void saveOrUpdate(Object entity)
          Save or update the given persistent instance, according to its id (matching the configured "unsaved-value"?).
 void saveOrUpdateAll(Collection entities)
          Save or update all given persistent instances, according to its id (matching the configured "unsaved-value"?).
 Object saveOrUpdateCopy(Object entity)
          Save or update the contents of given persistent object, according to its id (matching the configured "unsaved-value"?).
 void setAllowCreate(boolean allowCreate)
          Set if a new Session should be created if no thread-bound found.
 void setAlwaysUseNewSession(boolean alwaysUseNewSession)
          Set whether to always use a new Hibernate Session for this template.
 void setCacheQueries(boolean cacheQueries)
          Set whether to cache all queries executed by this template.
 void setCheckWriteOperations(boolean checkWriteOperations)
          Set whether to check that the Hibernate Session is not in read-only mode in case of write operations (save/update/delete).
 void setExposeNativeSession(boolean exposeNativeSession)
          Set whether to expose the native Hibernate Session to HibernateCallback code.
 void setQueryCacheRegion(String queryCacheRegion)
          Set the name of the cache region for queries executed by this template.
 void update(Object entity)
          Update the given persistent instance.
 void update(Object entity, LockMode lockMode)
          Update the given persistent instance.
 
Methods inherited from class org.springframework.orm.hibernate.HibernateAccessor
afterPropertiesSet, convertHibernateAccessException, convertJdbcAccessException, flushIfNecessary, getEntityInterceptor, getFlushMode, getJdbcExceptionTranslator, getSessionFactory, setEntityInterceptor, setFlushMode, setFlushModeName, setJdbcExceptionTranslator, setSessionFactory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HibernateTemplate

public HibernateTemplate()
Create a new HibernateTemplate instance.


HibernateTemplate

public HibernateTemplate(SessionFactory sessionFactory)
Create a new HibernateTemplate instance.

Parameters:
sessionFactory - SessionFactory to create Sessions

HibernateTemplate

public HibernateTemplate(SessionFactory sessionFactory,
                         boolean allowCreate)
Create a new HibernateTemplate instance.

Parameters:
sessionFactory - SessionFactory to create Sessions
allowCreate - if a new Session should be created if no thread-bound found
Method Detail

setAllowCreate

public void setAllowCreate(boolean allowCreate)
Set if a new Session should be created if no thread-bound found.

HibernateTemplate is aware of a respective Session bound to the current thread, for example when using HibernateTransactionManager. If allowCreate is true, a new Session will be created if none found. If false, an IllegalStateException will get thrown in this case.

See Also:
SessionFactoryUtils.getSession(SessionFactory, boolean)

isAllowCreate

public boolean isAllowCreate()
Return if a new Session should be created if no thread-bound found.


setAlwaysUseNewSession

public void setAlwaysUseNewSession(boolean alwaysUseNewSession)
Set whether to always use a new Hibernate Session for this template. Default is false; if activated, all operations on this template will work on a new Hibernate Session even in case of a pre-bound Session (for example, within a transaction or OpenSessionInViewFilter).

Within a transaction, a new Hibernate Session used by this template will participate in the transaction through using the same JDBC Connection. In such a scenario, multiple Sessions will participate in the same database transaction.

Turn this on for operations that are supposed to always execute independently, without side effects caused by a shared Hibernate Session.


isAlwaysUseNewSession

public boolean isAlwaysUseNewSession()
Return whether to always use a new Hibernate Session for this template.


setExposeNativeSession

public void setExposeNativeSession(boolean exposeNativeSession)
Set whether to expose the native Hibernate Session to HibernateCallback code. Default is false; instead, a Session proxy will be returned, suppressing close calls and automatically applying query cache settings and transaction timeouts.

See Also:
HibernateCallback, Session, setCacheQueries(boolean), setQueryCacheRegion(java.lang.String), prepareQuery(net.sf.hibernate.Query), prepareCriteria(net.sf.hibernate.Criteria)

isExposeNativeSession

public boolean isExposeNativeSession()
Return whether to expose the native Hibernate Session to HibernateCallback code, or rather a Session proxy.


setCheckWriteOperations

public void setCheckWriteOperations(boolean checkWriteOperations)
Set whether to check that the Hibernate Session is not in read-only mode in case of write operations (save/update/delete).

Default is true, for fail-fast behavior when attempting write operations within a read-only transaction. Turn this off to allow save/update/delete on a Session with flush mode NEVER.

See Also:
HibernateAccessor.setFlushMode(int), checkWriteOperationAllowed(net.sf.hibernate.Session), TransactionDefinition.isReadOnly()

isCheckWriteOperations

public boolean isCheckWriteOperations()
Return whether to check that the Hibernate Session is not in read-only mode in case of write operations (save/update/delete).


setCacheQueries

public void setCacheQueries(boolean cacheQueries)
Set whether to cache all queries executed by this template. If this is true, all Query and Criteria objects created by this template will be marked as cacheable (including all queries through find methods).

To specify the query region to be used for queries cached by this template, set the "queryCacheRegion" property.

See Also:
setQueryCacheRegion(java.lang.String), Query.setCacheable(boolean), Criteria.setCacheable(boolean)

isCacheQueries

public boolean isCacheQueries()
Return whether to cache all queries executed by this template.


setQueryCacheRegion

public void setQueryCacheRegion(String queryCacheRegion)
Set the name of the cache region for queries executed by this template. If this is specified, it will be applied to all Query and Criteria objects created by this template (including all queries through find methods).

The cache region will not take effect unless queries created by this template are configured to be cached via the "cacheQueries" property.

See Also:
setCacheQueries(boolean), Query.setCacheRegion(java.lang.String), Criteria.setCacheRegion(java.lang.String)

getQueryCacheRegion

public String getQueryCacheRegion()
Return the name of the cache region for queries executed by this template.


execute

public Object execute(HibernateCallback action)
               throws DataAccessException
Description copied from interface: HibernateOperations
Execute the action specified by the given action object within a Session. Application exceptions thrown by the action object get propagated to the caller (can only be unchecked). Hibernate exceptions are transformed into appropriate DAO ones. Allows for returning a result object, i.e. a domain object or a collection of domain objects.

Note: Callback code is not supposed to handle transactions itself! Use an appropriate transaction manager like HibernateTransactionManager. Generally, callback code must not touch any Session lifecycle methods, like close, disconnect, or reconnect, to let the template do its work.

Specified by:
execute in interface HibernateOperations
Parameters:
action - callback object that specifies the Hibernate action
Returns:
a result object returned by the action, or null
Throws:
DataAccessException - in case of Hibernate errors
See Also:
HibernateTransactionManager, org.springframework.dao, org.springframework.transaction, Session

executeFind

public List executeFind(HibernateCallback action)
                 throws DataAccessException
Description copied from interface: HibernateOperations
Execute the specified action assuming that the result object is a List. This is a convenience method for executing Hibernate find calls or queries within an action.

Specified by:
executeFind in interface HibernateOperations
Parameters:
action - calback object that specifies the Hibernate action
Returns:
a List result returned by the action, or null
Throws:
DataAccessException - in case of Hibernate errors

execute

public Object execute(HibernateCallback action,
                      boolean exposeNativeSession)
               throws DataAccessException
Execute the action specified by the given action object within a Session.

Parameters:
action - callback object that specifies the Hibernate action
exposeNativeSession - whether to expose the native Hibernate Session to callback code
Returns:
a result object returned by the action, or null
Throws:
DataAccessException - in case of Hibernate errors

getSession

protected Session getSession()
Return a Session for use by this template.

Returns a new Session in case of "alwaysUseNewSession" (using the same JDBC Connection as a transactional Session, if applicable), a pre-bound Session in case of "allowCreate" turned off, and a pre-bound or new Session else (new only if no transactional or otherwise pre-bound Session exists).

See Also:
SessionFactoryUtils.getSession(net.sf.hibernate.SessionFactory, boolean), SessionFactoryUtils.getNewSession(net.sf.hibernate.SessionFactory), setAlwaysUseNewSession(boolean), setAllowCreate(boolean)

createSessionProxy

protected Session createSessionProxy(Session session)
Create a close-suppressing proxy for the given Hibernate Session. The proxy also prepares returned Query and Criteria objects.

Parameters:
session - the Hibernate Session to create a proxy for
Returns:
the Session proxy
See Also:
Session.close(), prepareQuery(net.sf.hibernate.Query), prepareCriteria(net.sf.hibernate.Criteria)

get

public Object get(Class entityClass,
                  Serializable id)
           throws DataAccessException
Description copied from interface: HibernateOperations
Return the persistent instance of the given entity class with the given identifier, or null if not found.

Specified by:
get in interface HibernateOperations
Parameters:
entityClass - a persistent class
id - an identifier of the persistent instance
Returns:
the persistent instance, or null if not found
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.get(Class, java.io.Serializable)

get

public Object get(Class entityClass,
                  Serializable id,
                  LockMode lockMode)
           throws DataAccessException
Description copied from interface: HibernateOperations
Return the persistent instance of the given entity class with the given identifier, or null if not found. Obtains the specified lock mode if the instance exists.

Specified by:
get in interface HibernateOperations
Parameters:
entityClass - a persistent class
id - an identifier of the persistent instance
lockMode - the lock mode to obtain
Returns:
the persistent instance, or null if not found
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.get(Class, java.io.Serializable, net.sf.hibernate.LockMode)

load

public Object load(Class entityClass,
                   Serializable id)
            throws DataAccessException
Description copied from interface: HibernateOperations
Return the persistent instance of the given entity class with the given identifier, throwing an exception if not found.

Specified by:
load in interface HibernateOperations
Parameters:
entityClass - a persistent class
id - an identifier of the persistent instance
Returns:
the persistent instance
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.load(Class, java.io.Serializable)

load

public Object load(Class entityClass,
                   Serializable id,
                   LockMode lockMode)
            throws DataAccessException
Description copied from interface: HibernateOperations
Return the persistent instance of the given entity class with the given identifier, throwing an exception if not found. Obtains the specified lock mode if the instance exists.

Specified by:
load in interface HibernateOperations
Parameters:
entityClass - a persistent class
id - an identifier of the persistent instance
lockMode - the lock mode to obtain
Returns:
the persistent instance
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.load(Class, java.io.Serializable)

loadAll

public List loadAll(Class entityClass)
             throws DataAccessException
Description copied from interface: HibernateOperations
Return all persistent instances of the given entity class. Note: Use queries or criteria for retrieving a specific subset.

Specified by:
loadAll in interface HibernateOperations
Parameters:
entityClass - a persistent class
Returns:
a List containing 0 or more persistent instances
Throws:
DataAccessException - if there is a Hibernate error
See Also:
Session.createCriteria(java.lang.Class)

load

public void load(Object entity,
                 Serializable id)
          throws DataAccessException
Description copied from interface: HibernateOperations
Load the persistent instance with the given identifier into the given object, throwing an exception if not found.

Specified by:
load in interface HibernateOperations
Parameters:
entity - the object (of the target class) to load into
id - an identifier of the persistent instance
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.load(Object, java.io.Serializable)

refresh

public void refresh(Object entity)
             throws DataAccessException
Description copied from interface: HibernateOperations
Re-read the state of the given persistent instance.

Specified by:
refresh in interface HibernateOperations
Parameters:
entity - the persistent instance to re-read
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.refresh(Object)

refresh

public void refresh(Object entity,
                    LockMode lockMode)
             throws DataAccessException
Description copied from interface: HibernateOperations
Re-read the state of the given persistent instance. Obtains the specified lock mode for the instance.

Specified by:
refresh in interface HibernateOperations
Parameters:
entity - the persistent instance to re-read
lockMode - the lock mode to obtain
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.refresh(Object, net.sf.hibernate.LockMode)

contains

public boolean contains(Object entity)
                 throws DataAccessException
Description copied from interface: HibernateOperations
Check whether the given object is in the Session cache.

Specified by:
contains in interface HibernateOperations
Parameters:
entity - the persistence instance to check
Returns:
whether the given object is in the Session cache
Throws:
DataAccessException - if there is a Hibernate error
See Also:
Session.contains(java.lang.Object)

evict

public void evict(Object entity)
           throws DataAccessException
Description copied from interface: HibernateOperations
Remove the given object from the Session cache.

Specified by:
evict in interface HibernateOperations
Parameters:
entity - the persistent instance to evict
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.evict(java.lang.Object)

initialize

public void initialize(Object proxy)
                throws DataAccessException
Description copied from interface: HibernateOperations
Force initialization of a Hibernate proxy or persistent collection.

Specified by:
initialize in interface HibernateOperations
Parameters:
proxy - a proxy for a persistent object or a persistent collection
Throws:
DataAccessException - if we can't initialize the proxy, for example because it is not associated with an active Session
See Also:
Hibernate.initialize(java.lang.Object)

lock

public void lock(Object entity,
                 LockMode lockMode)
          throws DataAccessException
Description copied from interface: HibernateOperations
Obtain the specified lock level upon the given object, implicitly checking whether the corresponding database entry still exists (throwing an OptimisticLockingFailureException if not found).

Specified by:
lock in interface HibernateOperations
Parameters:
entity - the persistent instance to lock
lockMode - the lock mode to obtain
Throws:
DataAccessException - in case of Hibernate errors
See Also:
HibernateOptimisticLockingFailureException, Session.lock(Object, net.sf.hibernate.LockMode)

save

public Serializable save(Object entity)
                  throws DataAccessException
Description copied from interface: HibernateOperations
Persist the given transient instance.

Specified by:
save in interface HibernateOperations
Parameters:
entity - the transient instance to persist
Returns:
the generated identifier
Throws:
DataAccessException - in case of Hibernate errors
See Also:
Session.save(Object)

save

public void save(Object entity,
                 Serializable id)
          throws DataAccessException
Description copied from interface: HibernateOperations
Persist the given transient instance with the given identifier.

Specified by:
save in interface HibernateOperations
Parameters:
entity - the transient instance to persist
id - the identifier to a