an idea of general service for the persistence context

public class PersistenceContextService {

    private EntityManager entityManager;

    public void accept(final Consumer<EntityManager> consumer) {

    public void accept(final BiConsumer<EntityManager, U> consumer
                       final U u) {
        consumer.accept(entityManager, u);

    public <R> R apply(final Function<EnityManager, R> function) {
        return function.apply(entityManager);

    public <U, R> R appply(final BiFunction<EntityManager, U, R> function
                           final U u) {
        return function.apply(entityManager, u);

And now we can do this.

public class PeopleResource {

    private PersistenceContextService service;

    public Response create(final Person person) {
        service.accept(em -> em.persist(person));
        return Response.created(URI.create(person.getId()).build();

    @Path("/{id: \\d}")
    public Person read(final long id) {
        return service.apply(em -> em.find(Person.class, id));

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s