Я пытаюсь разработать простое веб-приложение на основе JSP с JPA и хотел бы знать правильное использование для его разработки.Правильное использование JPA в приложении jsp
В моем примере приложения у меня есть две страницы JSP и простой Java-класс для выполнения операций с базой данных. Оба файла JSP используют этот Java-класс для выполнения операций с БД.
Я аннотированный этот класс @Stateless
и впрыскивается менеджер Entity следующим образом:
@PersistenceContext(unitName = "myjpa")
EntityManager em;
В моих persistence.xml
я установил следующее свойство:
<property
name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"
/>
Я звоню класса в JSP с использованием JNDI (поскольку класс аннотируется для сессионного компонента без состояния) следующим образом:
InitialContext ic = new InitialContext();
Sample sample = (Sample) ic.lookup("java:app/" + application.getContextPath() + "/Sample");
Я столкнулся следующие сценарии:
Когда я пытаюсь использовать транзакцию
em.getTransaction().begin()/commit()
для вставки и обновления, он говорит, что не может использовать сделку с футляром JTA.Таким образом, в конструктор кода моего класса Java Я использую следующий код:
Properties properties = new Properties();
properties.put("javax.persistence.transactionType", "RESOURCE_LOCAL");
emf = Persistence.createEntityManagerFactory("myjpa",properties);
em = emf.createEntityManager();
Я пытался использовать транзакции, как em.getTransaction().begin()/commit()
. Но в этом случае страницы становятся медленнее после 2-3 обновлений базы данных и операций загрузки. Хотя я не получаю никаких исключений. В целом в моем столе у меня меньше 25 записей.
Мне кажется, что он ждет внутренне, чтобы выполнить некоторую операцию.
В то же время я также чувствую, что то, как я использую JPA, является неправильным и, следовательно, выпрашивает совет для правильного подхода для выполнения даже простых веб-приложений с JSP и JPA.
Хотя я все еще изучаю Java EE, в случае, если у вас есть какая-то конкретная ссылка для таких случаев, я тоже буду читать и просматривать их.
Вы не должны делать упорство внутри JSP, особенно если вы используете правильное приложение EE. Любая причина, по которой у вас нет компонентов для предоставления этой функции? –
Я пытаюсь развить простые вещи, чтобы понять вещи. в этом случае я выполняю упорство в моем классе java-класса без состояния. Просто, что я называю этот bean-компонент в jsp. Внутри jsp нет прямой операции persistence/db. Все вызовы db проходят через bean-класс. – user1050134