0

我是 JSP 的新手,这就是我想知道的。我只是在我的 HTML 页面上打印一些数据:

${movie.title}

我有一个Movie实体和一个MovieManagerEntityManager。当我想为电影(它是另一个实体Review)添加评论时,我的 servlet 在 MovieManager 中调用这段代码:

Movie m = new Movie(//some data...);
em.persist(m);

但是当我在我的页面上被重定向时,这条评论并没有在之后刷新和打印,但我什至会说可能在 30 秒后。

我尝试了很多我在网上看到的东西,主要是这个:

em.getTransaction().commit();
em.close();

但他们都返回这些错误:

使用 JTA 时无法使用 EntityTransaction。

和 :

EJBException,java.lang.IllegalStateException 用于关闭。

请给我一些我应该做什么的建议。

4

1 回答 1

1

servlet 是表示层的一部分。它不应该处理 JPA。相反,它应该调用服务,实现为 EJB 并包含业务逻辑,而业务逻辑又应该调用 DAO,也实现为 EJB,并包含持久性逻辑,处理实体管理器。

服务 EJB 将在每次调用其方法之一时自动启动事务(这是使用 EJB 的主要原因),并在方法返回时自动提交。

于 2013-05-04T21:27:05.083 回答