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

标签 java spring jsp servlets

我曾试图自己终止它,但我做不到。 我需要将对象保存在我的数据库的多个相关表中,并且它必须在一个事务中。 我正在使用 Servlet、JSP、JDBC。 (已经有dao层和service层) 正如我们所知,交易总是必须在服务层。

我在使用Spring MVC的时候,总是在服务中使用这个注解:

@Transactional

并且在我的 spring.xml 中有 TransactionManager 选项 现在我需要对 servlet 做同样的事情。 任何人都可以帮我举一些关于 servlet 交易的小例子,或者有人对此有建议吗?

最佳答案

您可以通过不同的方式在 JDBC 级别管理事务。

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

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

另一种方法,因为您有一个现有的服务层,将模仿 Spring 并在您的服务类周围使用代理。代理将打开创建事务,调用真实方法并提交事务。恕我直言,它仍然是一种侵入性方法,几乎​​没有代码重复。

我的选择是将方法 1 用于非常简单的用例或原型(prototype)设计,将方法 3 用于更严肃的用例 - 但这只是我的意见。

关于java - 如何仅使用 servlet 和 jdbc 创建事务处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32837446/

相关文章:

mysql - Spring Boot 连接 MySQL 远程数据库

spring - AspectJ:Autowired字段在Initbinder中为空

java - 页面未重定向

java - 将 Map<String, Object> 转换为 json

java - 第二种方法调用比第一种方法花费的时间少得多

java - 无法调用网络服务

java - 模式识别

java - 如何在 Play 框架中访问 Web 服务 API 时传递可选参数?

Spring原型(prototype)遵循原型(prototype)设计模式

java - JSP XML 语法错误 : JasperException when replacing <% %> with <jsp:scriptlet> </jsp:scriptlet>