...人
我们正在使用在Java 8下运行的Spring 4.1.6(MVC,TM和JDBC)来对抗Oracle 12c数据库。我们现在说这是一个人的数据库。
我有一个无状态的@Service(称为 PersonService ),带有@Transactional方法(称为 searchPersons()),该方法目前使用了几个注入的无状态@Repository DAO以下方式:
以单线程形式,一切都很好 - 只需15个查询,无论原始查询返回多少人,我都可以在数十个表中获得数百个属性
但是上面的所有内容都必须尽可能快,而且我希望使用由线程池或类似功能支持的ExecutorService进行多线程查询#2 ..#15,。
但是,挑战在于,如果我将给定DAO的工作委托给另一个线程,DAO(由JDBCTemplate支持,由DataSource支持)将不会使用存储在Spring TM&#39中的Connection。 ; s ThreadLocal字典。所以它看到了一个不同的会话,错误的TEMP_PERSON_IDs表。我想要的,我认为,是在searchPersons()方法中按需创建各种DAO,由在SearchPersons()事务上下文中使用相同Connection的SingleConnectionDataSource对象提供支持。然后我将围绕DAO调用构建一个Future,它可以提交给Executor。
问题:在Spring中有一种优雅的方式吗?或者我是否必须放弃Spring bean初始化并手动构造这些DAO,确保注入所有依赖项(jdbcTemplates等)?
非常非常感谢您阅读这篇文章。 : - )
Eryq