Class TestEntityManager

java.lang.Object
org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager

public class TestEntityManager extends Object
Alternative to EntityManager for use in JPA tests. Provides a subset of EntityManager methods that are useful for tests as well as helper methods for common testing tasks such as persist/flush/find.
Since:
1.4.0
Author:
Phillip Webb
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new TestEntityManager instance for the given EntityManagerFactory.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Clear the persistence context, causing all managed entities to become detached.
    void
    detach(Object entity)
    Remove the given entity from the persistence context, causing a managed entity to become detached.
    <E> E
    find(Class<E> entityClass, Object primaryKey)
    Find by primary key.
    void
    Synchronize the persistence context to the underlying database.
    Return the underlying EntityManager that's actually used to perform all operations.
    getId(Object entity)
    Return the ID of the given entity.
    <T> T
    getId(Object entity, Class<T> idType)
    Return the ID of the given entity cast to a specific type.
    <E> E
    merge(E entity)
    Merge the state of the given entity into the current persistence context.
    <E> E
    persist(E entity)
    Make an instance managed and persistent.
    <E> E
    persistAndFlush(E entity)
    Make an instance managed and persistent then synchronize the persistence context to the underlying database.
    Make an instance managed and persistent then return its ID.
    <T> T
    persistAndGetId(Object entity, Class<T> idType)
    Make an instance managed and persistent then return its ID.
    <E> E
    persistFlushFind(E entity)
    Make an instance managed and persistent, synchronize the persistence context to the underlying database and finally find the persisted entity by its ID.
    <E> E
    refresh(E entity)
    Refresh the state of the instance from the database, overwriting changes made to the entity, if any.
    void
    remove(Object entity)
    Remove the entity instance.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • persistAndGetId

      public Object persistAndGetId(Object entity)
      Make an instance managed and persistent then return its ID. Delegates to EntityManager.persist(Object) then getId(Object).

      Helpful when setting up test data in a test:

       Object entityId = this.testEntityManager.persist(new MyEntity("Spring"));
       
      Parameters:
      entity - the source entity
      Returns:
      the ID of the newly persisted entity
    • persistAndGetId

      public <T> T persistAndGetId(Object entity, Class<T> idType)
      Make an instance managed and persistent then return its ID. Delegates to EntityManager.persist(Object) then getId(Object, Class).

      Helpful when setting up test data in a test:

       Long entityId = this.testEntityManager.persist(new MyEntity("Spring"), Long.class);
       
      Type Parameters:
      T - the ID type
      Parameters:
      entity - the source entity
      idType - the ID type
      Returns:
      the ID of the newly persisted entity
    • persist

      public <E> E persist(E entity)
      Make an instance managed and persistent. Delegates to EntityManager.persist(Object) then returns the original source entity.

      Helpful when setting up test data in a test:

       MyEntity entity = this.testEntityManager.persist(new MyEntity("Spring"));
       
      Type Parameters:
      E - the entity type
      Parameters:
      entity - the entity to persist
      Returns:
      the persisted entity
    • persistFlushFind

      public <E> E persistFlushFind(E entity)
      Make an instance managed and persistent, synchronize the persistence context to the underlying database and finally find the persisted entity by its ID. Delegates to persistAndFlush(Object) then find(Class, Object) with the entity ID.

      Helpful when ensuring that entity data is actually written and read from the underlying database correctly.

      Type Parameters:
      E - the entity type
      Parameters:
      entity - the entity to persist
      Returns:
      the entity found using the ID of the persisted entity
    • persistAndFlush

      public <E> E persistAndFlush(E entity)
      Make an instance managed and persistent then synchronize the persistence context to the underlying database. Delegates to EntityManager.persist(Object) then flush() and finally returns the original source entity.

      Helpful when setting up test data in a test:

       MyEntity entity = this.testEntityManager.persistAndFlush(new MyEntity("Spring"));
       
      Type Parameters:
      E - the entity type
      Parameters:
      entity - the entity to persist
      Returns:
      the persisted entity
    • merge

      public <E> E merge(E entity)
      Merge the state of the given entity into the current persistence context. Delegates to EntityManager.merge(Object)
      Type Parameters:
      E - the entity type
      Parameters:
      entity - the entity to merge
      Returns:
      the merged entity
    • remove

      public void remove(Object entity)
      Remove the entity instance. Delegates to EntityManager.remove(Object)
      Parameters:
      entity - the entity to remove
    • find

      public <E> E find(Class<E> entityClass, Object primaryKey)
      Find by primary key. Delegates to EntityManager.find(Class, Object).
      Type Parameters:
      E - the entity type
      Parameters:
      entityClass - the entity class
      primaryKey - the entity primary key
      Returns:
      the found entity or null if the entity does not exist
      See Also:
    • flush

      public void flush()
      Synchronize the persistence context to the underlying database. Delegates to EntityManager.flush().
    • refresh

      public <E> E refresh(E entity)
      Refresh the state of the instance from the database, overwriting changes made to the entity, if any. Delegates to EntityManager.refresh(Object).
      Type Parameters:
      E - the entity type
      Parameters:
      entity - the entity to refresh
      Returns:
      the refreshed entity
    • clear

      public void clear()
      Clear the persistence context, causing all managed entities to become detached. Delegates to EntityManager.clear()
    • detach

      public void detach(Object entity)
      Remove the given entity from the persistence context, causing a managed entity to become detached. Delegates to EntityManager.detach(Object).
      Parameters:
      entity - the entity to detach.
    • getId

      public Object getId(Object entity)
      Return the ID of the given entity. Delegates to PersistenceUnitUtil.getIdentifier(Object).
      Parameters:
      entity - the source entity
      Returns:
      the ID of the entity or null
      See Also:
    • getId

      public <T> T getId(Object entity, Class<T> idType)
      Return the ID of the given entity cast to a specific type. Delegates to PersistenceUnitUtil.getIdentifier(Object).
      Type Parameters:
      T - the ID type
      Parameters:
      entity - the source entity
      idType - the expected ID type
      Returns:
      the ID of the entity or null
      See Also:
    • getEntityManager

      public final EntityManager getEntityManager()
      Return the underlying EntityManager that's actually used to perform all operations.
      Returns:
      the entity manager