Сущность между EJB и Джерси - PullRequest
1 голос
/ 02 апреля 2012

Я новичок.

Имеет ли Джерси и EJB одинаковую область действия EntityManager?

Должен ли я передавать EntityManager в EJB для того же контекста постоянства?

Основная цель использования - JTA.

@Stateless
class MyEJB {

    public MyEntity find(Long id) {
        ...
    }

    @PersistenceContext;
    EntityManager entityManager;
}


class MyResource {

    @GET
    @Path("/myentity/{id}");
    public MyEntity get(@PathParam("id") final long id) {
        final MyEntity found = myEjb.find(id);
        // is found's state detached?

        // should I have to reattach?
        found.setDate(new Date());

        return found;
    }

    @EJB
    private MyEjb myEjb;

    @PersistenceContext;
    EntityManager entityManager;
}

1 Ответ

1 голос
/ 02 апреля 2012

Имеет ли Джерси и EJB одну и ту же область EntityManager?

Должен ли я передать EntityManager в EJB для того же контекста постоянства?

Я не думаю, что ваша формулировка верна, но они могут использовать один и тот же экземпляр EntityManager, и вы выбрали правильный путь (путем внедрения). Взгляните на эту главу Руководства по Java EE 6:

Чтобы получить экземпляр EntityManager, введите менеджер сущностей в компонент приложения:

@PersistenceContext
EntityManager em;

Итак, еще раз, ваш подход правильный. Что касается вопросов в комментариях к коду: тот факт, что MyEntity присоединен или отсоединен, зависит от реализации метода find в вашем EJB. Если вы сделаете следующее, оно будет прикреплено:

public MyEntity find(Long id) {  
    return entityManager.find(MyEntity.class, id);  
}  

Наконец, если вы выбрали JTA для использования транзакций, управляемых контейнером, транзакции будут автоматически ограничены естественными границами методов MyBean. Чтобы иметь JTA-транзакции, вы должны использовать эту строку в файле persistence.xml:

 <persistence-unit name="em" transaction-type="JTA"> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...