an idea of general service for the persistence context
@Stateless public class PersistenceContextService { @PersistenceContext private EntityManager entityManager; public void accept(final Consumer<EntityManager> consumer) { consumer.accept(entityManager); } 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.
@Path("/people") public class PeopleResource { @Inject private PersistenceContextService service; @POST @Consumes({MediaType.APPLICATION_JSON}) public Response create(final Person person) { service.accept(em -> em.persist(person)); return Response.created(URI.create(person.getId()).build(); } @GET @Path("/{id: \\d}") @Produces({MediaType.APPLICATION_JSON}) public Person read(final long id) { return service.apply(em -> em.find(Person.class, id)); } }