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.