2013-05-30 4 views
0

Я создал спокойный веб-сервис для netbeans, который обращается к локальной базе данных. Я посмотрел образец проекта из netbeans, и они используют контроллер JPA. Этот вопрос может быть базовым, но у меня нет времени, чтобы очень глубоко расследовать действия JPA.JPA контроллер & база данных. Веб-сервис

Может кто-нибудь объяснить, почему использование контроллеров JPA необходимо?

Кроме того, я прочитал этот предыдущий вопрос: «Доступ к таблице базы данных через JPA Vs. EJB в веб-приложении», и он рекомендует использовать EJB.

Опять же, это можно объяснить.

класс CustomerJpaController общественность реализует Serializable {

public CustomerJpaController(UserTransaction utx, EntityManagerFactory emf) { 
    this.utx = utx; 
    this.emf = emf; 
} 
private UserTransaction utx = null; 
private EntityManagerFactory emf = null; 

public EntityManager getEntityManager() { 
    return emf.createEntityManager(); 
} 

public void create(Customer customer) throws PreexistingEntityException, RollbackFailureException, Exception { 
    EntityManager em = null; 
    try { 
     utx.begin(); 
     em = getEntityManager(); 
     em.persist(customer); 
     utx.commit(); 
    } catch (Exception ex) { 
     try { 
      utx.rollback(); 
     } catch (Exception re) { 
      throw new RollbackFailureException("An error occurred attempting to roll back the transaction.", re); 
     } 
     if (findCustomer(customer.getCustomerId()) != null) { 
      throw new PreexistingEntityException("Customer " + customer + " already exists.", ex); 
     } 
     throw ex; 
    } finally { 
     if (em != null) { 
      em.close(); 
     } 
    } 
} 

ответ

0

Я никогда не слышал о «JPA контроллера», но один обычно вкладывается JPA код в какой-то класс обслуживания для того, чтобы обрабатывать транзакции.

Необслуживаемые фасоль EJB идеально подходят для этого. Без них вам придется начинать, совершать и откатывать транзакцию вручную, что является утомительным, многословным и подверженным ошибкам. С EJB это становится тривиальным, поскольку они прозрачно управляют транзакциями для вас.

+0

Это фрагмент из этого класса. класс клиента - это объект базы данных. @mike – David031

+0

@ user1960972 то, что вы показали, действительно сродни Службе. Посмотрите на весь код обработки транзакций и закрытие EM. С EJB все это просто уходит. Вы вводите EM, вызываете запрос на него, и все. –

Смежные вопросы