【发布时间】:2015-06-16 18:08:26
【问题描述】:
我对java很陌生。我正在使用简单的 JSP/Servlet 和 Service/Dao 架构来学习 JDBC。请考虑下面给出的代码快照。
package com.login.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HelloService helloService = new HelloService();
helloService.doMyUnitOfWork();
}
}
class HelloService {
public void doMyUnitOfWork() {
HelloDao helloDao = new HelloDao();
// I want to execute all below three works in single unit, it means I want to use single transaction for all database operations.
// Thus any of my below database operation fails I want to rollback all of them, otherwise commit all in database.
helloDao.doMyWork1();
helloDao.doMyWork2();
helloDao.doMyWork3();
}
}
class HelloDao {
public void doMyWork1() {
// this will do database operation 1.
}
public void doMyWork2() {
// this will do database operation 2.
}
public void doMyWork3() {
// this will do database operation 3.
}
}
正如我在上面的代码快照中提到的,我需要使用简单的 JDBC 在服务层处理事务。当我尝试谷歌它时,我得到的几乎是 Spring 和 EJB 结果,而不是简单的 JDBC。
有可能吗?如果是,那么如何?
提前致谢。
【问题讨论】:
-
Mkyong 的教程也不错,只要检查一下是否过时:mkyong.com/jdbc/jdbc-transaction-example
-
感谢您的宝贵时间,但我已经浏览了您提供的两个链接。似乎他们已将一笔交易用于相同的方法。就我而言,我需要它用于不同的方法和不同的类。
-
在这种情况下,查看 Java Transaction API (JTA) 可能会有所帮助,因为它是一个更高级的要求。你也可以通过在类、方法和提交之间共享 JDBC 连接来滚动你自己的实现,但它很快就会变成像 JTA 这样的东西的低级实现。
标签: java jdbc service transactions