我曾试图自己终止它,但我做不到。 我需要将对象保存在我的数据库的多个相关表中,并且它必须在一个事务中。 我正在使用 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/