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
    Modifier and Type | Method and Description
    --- | ---
    `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<?>)`