Class 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
    • Constructor Summary

      Constructors 
      ConstructorDescription
      TestEntityManager​(javax.persistence.EntityManagerFactory entityManagerFactory)
      Create a new TestEntityManager instance for the given EntityManagerFactory.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      voidclear()
      Clear the persistence context, causing all managed entities to become detached.
      voiddetach​(Object entity)
      Remove the given entity from the persistence context, causing a managed entity to become detached.
      <E> Efind​(Class<E> entityClass, Object primaryKey)
      Find by primary key.
      voidflush()
      Synchronize the persistence context to the underlying database.
      javax.persistence.EntityManagergetEntityManager()
      Return the underlying EntityManager that's actually used to perform all operations.
      ObjectgetId​(Object entity)
      Return the ID of the given entity.
      <T> TgetId​(Object entity, Class<T> idType)
      Return the ID of the given entity cast to a specific type.
      <E> Emerge​(E entity)
      Merge the state of the given entity into the current persistence context.
      <E> Epersist​(E entity)
      Make an instance managed and persistent.
      <E> EpersistAndFlush​(E entity)
      Make an instance managed and persistent then synchronize the persistence context to the underlying database.
      ObjectpersistAndGetId​(Object entity)
      Make an instance managed and persistent then return it's ID.
      <T> TpersistAndGetId​(Object entity, Class<T> idType)
      Make an instance managed and persistent then return it's ID.
      <E> EpersistFlushFind​(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> Erefresh​(E entity)
      Refresh the state of the instance from the database, overwriting changes made to the entity, if any.
      voidremove​(Object entity)
      Remove the entity instance.
    • Constructor Detail

      • TestEntityManager

        public TestEntityManager​(javax.persistence.EntityManagerFactory entityManagerFactory)
        Create a new TestEntityManager instance for the given EntityManagerFactory.
        Parameters:
        entityManagerFactory - the source entity manager factory
    • Method Detail

      • persistAndGetId

        public Object persistAndGetId​(Object entity)
        Make an instance managed and persistent then return it's 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 it's 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:
        getId(Object)
      • 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(Object, Class)
      • 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:
        getId(Object)
      • getEntityManager

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