运行 spring 单个事务中的@Transactional 注解方法
Run spring @Transactional annotated methods in a single transaction
我们有几个 class 用于以命令-查询-分离方式写入和读取数据库层。
这些 class 中的每一个都分别用 @Transactional 注解 @Transactional(readOnly = true)。
现在我们已经实现了数据导入,它创建了许多对象并使用我们的命令层将它们写入数据库。
目前,单个对象的每次写入都是在其自己的事务中完成的,我很确定这是一个主要的性能杀手。
有没有一种简单的方法来注释数据导入class,即使它多次调用命令层中的许多@Transactional 注释方法,也都可以完成在单笔交易中?
这甚至是提高插入性能的有效方法,还是您认为这是个坏主意?
错误一:我使用了 ExecutorService,正如我在本文中所读到的 post How to use spring transaction in multithread spring 不支持多线程与事务的结合。
错误二:我替换了ExecutorService,直接调用注解@Transactional的spring管理的class方法,但是这次没有用,因为class是嵌套在调用 class 中,因此它不被视为调用 "from outside".
我们有几个 class 用于以命令-查询-分离方式写入和读取数据库层。
这些 class 中的每一个都分别用 @Transactional 注解 @Transactional(readOnly = true)。
现在我们已经实现了数据导入,它创建了许多对象并使用我们的命令层将它们写入数据库。
目前,单个对象的每次写入都是在其自己的事务中完成的,我很确定这是一个主要的性能杀手。
有没有一种简单的方法来注释数据导入class,即使它多次调用命令层中的许多@Transactional 注释方法,也都可以完成在单笔交易中?
这甚至是提高插入性能的有效方法,还是您认为这是个坏主意?
错误一:我使用了 ExecutorService,正如我在本文中所读到的 post How to use spring transaction in multithread spring 不支持多线程与事务的结合。
错误二:我替换了ExecutorService,直接调用注解@Transactional的spring管理的class方法,但是这次没有用,因为class是嵌套在调用 class 中,因此它不被视为调用 "from outside".