org.springframework.orm.jpa

## Interface JpaCallback<T>

Deprecated.
as of Spring 3.1, in favor of native EntityManager usage (typically obtained through `@PersistenceContext`)

    @Deprecated
    public interface JpaCallback<T>

Callback interface for JPA code. To be used with `JpaTemplate`'s execution method, often as anonymous classes within a method implementation. A typical implementation will call `EntityManager.find/merge` to perform some operations on persistent objects.

Since:
  2.0
Author:
  Juergen Hoeller
See Also:
  `JpaTemplate`, `JpaTransactionManager`

### Method Summary

Methods
`T` `doInJpa(EntityManager em)` Deprecated. Gets called by `JpaTemplate.execute` with an active JPA `EntityManager`.

### Method Detail

#### doInJpa

    T doInJpa(EntityManager em)
              throws PersistenceException

Deprecated.
Gets called by `JpaTemplate.execute` with an active JPA `EntityManager`. Does not need to care about activating or closing the `EntityManager`, or handling transactions.

Note that JPA callback code will not flush any modifications to the database if not executed within a transaction. Thus, you need to make sure that JpaTransactionManager has initiated a JPA transaction when the callback gets called, at least if you want to write to the database.

Allows for returning a result object created within the callback, i.e. a domain object or a collection of domain objects. A thrown custom RuntimeException is treated as an application exception: It gets propagated to the caller of the template.

Parameters:
  `em` - active EntityManager
Returns:
  a result object, or `null` if none
Throws:
  `PersistenceException` - if thrown by the JPA API
See Also:
  `JpaTemplate.execute(org.springframework.orm.jpa.JpaCallback<T>)`, `JpaTemplate.executeFind(org.springframework.orm.jpa.JpaCallback<?>)`