класс декаларации:
@Stateless
@Local( { IMyLocalSLSB.class })
@Remote( { IMyRemoteSLSB.class }) })
public class mySLSB implements IMySLSB {
private EntityManager em;
и теперь некоторые методы для вставки / обновления и удаления записей БД - это обязательные аннотации транзакций, я думал, что они не как jboss, и EJB3.0 обрабатывает их, используя значения по умолчанию:
public void crud(MyEntity myEntity) {
em.merge(myEntity);// inserts or updates
}
public void deleteInsert(MyEntity myEntity) {
MyEntity found = em.find(MyEntity.class, myEntity.getMyEntityPK());
if (found == null) {
em.merge(myEntity);
} else {
em.remove(found);
}
}
И, наконец, это лучший способ вернуть запись / сущность, но не сохранять дальнейшие изменения. Я беру запись, изменяю данные и затем отображаю (я мог бы поместить в DTO, но это кажется более аккуратным / меньше объектов)
public MyEntity getAnEntity(integer id){
MyEntity myEntity = em.find(MyEntity.class, id);
org.hibernate.Session session = (Session) em.getDelegate();
session.evict(myEntity);
return myEntity;
}
Для суммирования требуются ли аннотации к методам транзакций в slsb, и является ли session.evict лучшим способом остановить сохранение любых изменений?
Спасибо!