Joe*_*nza 4 java spring jdbc spring-jdbc
我喜欢JdbcTemplate的简单易用性,但我对它的工作方式感到有些困惑.似乎每个操作(query()或update())从数据源获取连接并关闭它.
很漂亮,但是如何在同一个连接中执行多个SQL查询?
我可能想要按顺序执行多个操作(例如SELECT后跟一个INSERT后跟一个提交)或者我可能想要执行嵌套查询(SELECT然后根据每行的结果执行第二个SELECT).
我如何使用JdbcTemplate执行此操作.我使用合适的班级吗?
如何在同一个连接中执行多个SQL查询?
这里的正确答案是"使用交易".如果您开始事务然后执行多个操作JdbcTemplate
,则每个操作都将在事务范围内,因此保证使用相同的连接.
如果你不想卷入到交易,那么另一种方法是使用上更原始的操作JdbcTemplate
,比如execute(ConnectionCallback action)
,在那里你提供一个实例ConnectionCallback
,其被赋予Connection
,其上就可以执行你选择的任何操作.当然,但是这样做你JdbcTemplate
在任何实际操作中都没有得到帮助.
Spring中的事务非常简单,您应该考虑使用它们(参见上面的链接).
我假设你想要交易?如果是这样,请查看Spring、JdbcTemplate 和 Transactions。
另外,我建议你看看Ibatis。Spring JDBC 看起来很方便,但它有一个主要问题:结果集到对象的默认映射使用 Spring 类,这在处理大型结果集时实际上很慢。您可以通过为这些查询编写自己的行映射器来解决这个问题,但我个人不想编写这种样板。
举一个不同的例子:我有一个基于 Spring 反射的行映射器的查询需要 50 秒,而手动编码的行映射器需要 2 秒。
此外,Spring JDBC 使用内联 SQL。在 Java 中,这是相当丑陋的,因为 Java(令人讨厌)没有好的多行字符串格式。
归档时间: |
|
查看次数: |
17849 次 |
最近记录: |