当前位置: 首页 > 知识库问答 >
问题:

为什么在servlet调用结束时我的更改没有刷新到数据库?

韩瀚
2023-03-14
@WebServlet("/UpdateFooServlet")
public class UpdateFooServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

@Inject
private FooDAO fooDAO;

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    Foo foo = fooDAO.findById(Integer.parseInt(request.getParameter("id")));
    foo.setName(request.getParameter("name"));  
            // Should the transaction flush/commit after this returns?
}
}

共有1个答案

楚苏燕
2023-03-14

问题是事务边界是在EJB层上定义的,而不是在Servlet上定义的,这意味着如果您在EJB方法中这样做,那么在EJB方法返回后将提交给DB。还要记住,不再管理servlet中的foo实例,这意味着不再跟踪其更改。

另一方面,在servlet中实现任何DB操作/业务逻辑将是一种糟糕的做法。

为了使其更短:在DAO服务中创建另一个方法save(Fao,Fao),代码如下:

em.merge(fao);
 类似资料:
  • 各位早上好,, 我刚完成React的培训,我想做一个项目来练习。首先,我只是在firebase数据库中发布数据。然后,我想使用钩子(useState和useEffect)获取数据并将其显示在react组件中。 问题是,在使用axios获取数据后,我最终陷入了经典的无限循环陷阱,但我不知道如何使用依赖性来阻止它。 请查找以下代码: 当我使用控制台日志类型时,数据是正确的。但当我控制台记录fetche

  • 在我的Java web应用程序中,我使用了servlet(控制器)、JSP(视图)和POJO类。我每10秒运行一次应用程序,并将下拉列表中选定URL的更新值存储到数据库中。在我的servlet中,我获取这些值并转发到JSP,JSP将显示所选URL的更新值。我用过 在这里,我的JSP看起来像:在顶部框架中我有下拉列表。我选择一个URL并单击提交按钮一次。该选定选项(URL)的结果显示在底部框架中。第

  • 我有两个表,分别名为tblOefenen(带有主键)和tblOefenen2(带有外键)。我已经删除了前面的外键,因为我想添加‘更新级联’到外键。 那么做了什么:1。我已经移除了TbloeFenen2的约束(外键)。2.我已经将新的外键添加到列ID中,我的主键在列ID上,也在表tbloefenen中: 有人能帮我一下吗?

  • 我一直在创建一个android应用程序。我设计了一个注册表。在这里,当人们单击signup按钮时,详细信息将添加到mysql表中(包含确认代码作为字段)并且确认代码最初被设置为NULL,然后调用servlet。这个servlet包含生成一个4位随机数并将其添加到特定条目的mysql表中的代码。然后servlet调用另一个类中的一个方法,该方法用代码向用户发送确认电子邮件。 现在,当我运行应用程序和

  • 由于某些奇怪的原因,数据库没有得到更新,我可以得到正确的数据(我检查了它),但是当我单击submit时,数据库没有得到更新。你能帮我查一下有没有什么东西丢了吗?注意:“---”只是出于安全考虑! ?

  • 我正在尝试使用JS SDK在Dropbox上上传一个文件。下面是我试图调用函数的html代码: 这是定义函数的文件 但是,由于我不知道的原因,我的函数不能被调用。我得到错误“referenceerror:Dropupload is not defined”,我不知道这是否与问题有关,但我得到另一个错误:“syntaxerror:import declarations may only at top