Example: A Persistent Employee Registry

From our simple Employee entity defined earlier, we can use the EntityManager facilities to perform CRUD (Create, Read, Update, Delete) operations and build a simple persistent registry of employees. The full example is available in greater detail in Appendix F.

A Transactional Abstraction

Before we can take advantage of the EntityManager to flush and synchronize our changes with the database, we must set up a transactional context within which our code can run. Because we’re not going to delve into the full features of transactions until later, let’s define a simple abstraction that marks the beginning and end of the transactional context.

public interface TxWrappingLocalBusiness
{
    **
    * Wraps the specified tasks in a new Transaction
    *
    * @param task
    * @throws IllegalArgumentException If no tasks are specified
    * @throws TaskExecutionException If an error occurred in invoking
    * {@link Callable#call()}
    */
   void wrapInTx(Callable<?>... tasks) throws IllegalArgumentException,
      TaskExecutionException;
}

From here we can construct simple java.util.concurrent.Callable implementations that encapsulate our JPA operations, and these will all run within a transaction that starts and ends with the invocation to wrapInTx. Let’s assume we have an instance called txWrapper that implements TxWrappingLocalBusiness for us.

Persisting Entities

Persisting an entity is the act of inserting it within a database. We persist entities that have not yet been created in the ...

Get Enterprise JavaBeans 3.1, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.