Java 如何仅使用servlet和jdbc创建事务处理?

Java 如何仅使用servlet和jdbc创建事务处理?,java,spring,jsp,servlets,Java,Spring,Jsp,Servlets,我曾试图自己结束这一切,但我做不到。 我需要将对象保存在数据库的多个相对表中,并且必须保存在一个事务中。 我正在使用servlet、JSP、JDBC。 (已经有dao层和服务层) 正如我们所知,事务必须始终位于服务层 当我使用Spring MVC时,我总是在服务中使用此注释: @Transactional 并且在my spring.xml中有TransactionManager的选项 现在我需要对servlet执行同样的操作。 有谁能帮我举一些小的servlets事务示例,或者有人对此有一些建

我曾试图自己结束这一切,但我做不到。 我需要将对象保存在数据库的多个相对表中,并且必须保存在一个事务中。 我正在使用servlet、JSP、JDBC。 (已经有dao层和服务层) 正如我们所知,事务必须始终位于服务层

当我使用Spring MVC时,我总是在服务中使用此注释:

@Transactional
并且在my spring.xml中有TransactionManager的选项 现在我需要对servlet执行同样的操作。
有谁能帮我举一些小的servlets事务示例,或者有人对此有一些建议吗?

关于您的服务方法,您应该自己处理事务,您可以在下面找到一个示例:

        try {
            dbConnection = getDBConnection();

            dbConnection.setAutoCommit(false);

            // do your database work preparedStatement Insert, Update 


            //OR                
            // If you are doing your work on DAO you can pass connection to your DAO                
            //XDao  xDao  = new XDao(dbConnection);
            //YDao yDao = new YDao(dbConnection);

            //xDao.doWork();
            //yDao.doWork()  

            dbConnection.commit();

            System.out.println("Done!");

        } catch (SQLException e) {

            System.out.println(e.getMessage());
            dbConnection.rollback();

        } finally {

            //Close prepared statements


            //close connection
            if (dbConnection != null) {
                dbConnection.close();
            }

        }

对于高级模式和uderstanding,我推荐这篇关于您的服务方法的博文,您应该自己处理事务,您将发现以下示例:

        try {
            dbConnection = getDBConnection();

            dbConnection.setAutoCommit(false);

            // do your database work preparedStatement Insert, Update 


            //OR                
            // If you are doing your work on DAO you can pass connection to your DAO                
            //XDao  xDao  = new XDao(dbConnection);
            //YDao yDao = new YDao(dbConnection);

            //xDao.doWork();
            //yDao.doWork()  

            dbConnection.commit();

            System.out.println("Done!");

        } catch (SQLException e) {

            System.out.println(e.getMessage());
            dbConnection.rollback();

        } finally {

            //Close prepared statements


            //close connection
            if (dbConnection != null) {
                dbConnection.close();
            }

        }

对于高级模式和uderstanding,我推荐这篇博文

我认为首先您需要了解希望使用哪种规范,然后确定如何进行集成

Java中有很多技术和技术可以访问数据库

通常,如果您想访问最低层(JDBC)的数据库,您必须自己管理事务

可能很有用,因为它提供了很多示例。一般来说,您有
setAutoCommit(false)”,然后在
Connection`jdbc接口上执行rollback/commit

如果您希望使用hibernate之类的东西(注意,您仍然不需要spring),那么事务接口就很方便了。 这是你的电话号码

Spring作为一个集成框架,允许通过定义相关bean来使用事务管理,所以您可以自己选择应该使用哪种事务管理技术

这是一个广泛的主题,您可能有兴趣阅读以了解更多spring管理事务的方法

一般来说,JDBC是java中访问数据库的最低级别,所有其他API都构建在它之上


希望这对您有所帮助

我认为首先您需要了解希望使用哪种规范,然后确定如何进行集成

Java中有很多技术和技术可以访问数据库

通常,如果您想访问最低层(JDBC)的数据库,您必须自己管理事务

可能很有用,因为它提供了很多示例。一般来说,您有
setAutoCommit(false)”,然后在
Connection`jdbc接口上执行
rollback/commit

如果您希望使用hibernate之类的东西(注意,您仍然不需要spring),那么事务接口就很方便了。 这是你的电话号码

Spring作为一个集成框架,允许通过定义相关bean来使用事务管理,所以您可以自己选择应该使用哪种事务管理技术

这是一个广泛的主题,您可能有兴趣阅读以了解更多spring管理事务的方法

一般来说,JDBC是java中访问数据库的最低级别,所有其他API都构建在它之上


希望这对您在JDBC级别管理事务有帮助

最简单的方法是过滤器:在开始时打开事务,或在请求处理时打开事务,并在结束时提交(或回滚)它。它在其他层中的侵入性尽可能小,但您不能在服务层进行事务划分

相反,您可以添加代码以在所有(相关)服务方法中显式地创建和提交事务。您可以将真实代码放在常用方法中以限制代码重复,但您必须一致地修改所有服务层

另一种方法是,当您有一个现有的服务层时,模仿Spring并在您的服务类周围使用代理。代理将打开create事务,调用real方法并提交事务。依我看,这仍然是一种侵入性小、代码重复少的方法


我的选择是对非常简单的用例使用方法1,或者对更严重的用例使用方法3,但这只是我的观点。

在JDBC级别管理事务有不同的方法

最简单的方法是过滤器:在开始时打开事务,或在请求处理时打开事务,并在结束时提交(或回滚)它。它在其他层中的侵入性尽可能小,但您不能在服务层进行事务划分

相反,您可以添加代码以在所有(相关)服务方法中显式地创建和提交事务。您可以将真实代码放在常用方法中以限制代码重复,但您必须一致地修改所有服务层

另一种方法是,当您有一个现有的服务层时,模仿Spring并在您的服务类周围使用代理。代理将打开create事务,调用real方法并提交事务。依我看,这仍然是一种侵入性小、代码重复少的方法


我的选择是对非常简单的用例使用方法1,或者对更严重的用例使用方法3——但这只是我的观点。

我的建议是为您提供一个spring托管服务,我认为您不太可能真正希望每个请求跨所有应用程序层执行一个事务。然后您可以通过WebApplicationContextUtilsHi MahdeTo从您的上下文中检索该bean,我对数据库的大多数操作都是相对的,必须是事务性的。。。关于spring托管服务:在我当前的任务中,我需要自己处理事务(不使用spring或其他东西)…试图找到一些示例。。。但是运气不好,你在用吗