Spring JDBCTemplate 使用 MySQL 进行表锁定
我刚刚将我们的一个应用程序从纯 JDBC 迁移到 Spring 的 JDBCTemplate。 我想知道如何为表创建写锁。 我是否只执行“LOCK TABLE foo”查询,或者是否有通用的方法在 JDBCTemplate 中执行此操作?
谢谢!
I just migrating one of our applications from pure JDBC to Spring's JDBCTemplate. I was wondering how to create a write lock for a table. Do i just execute a "LOCK TABLE foo" Query or is there a generalisized way for doing this in JDBCTemplate?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
JdbcTemplate 使用数据源,因此不能保证您将使用相同的连接来执行 LOCK TABLE 语句以及在下次调用 JdbcTemplate 时要执行的操作。 因此,在交易中执行此操作很重要。 设置 PlatformTransactionManager,可以是 JdbcTemplate 的数据源上的 DataSourceTransactionManager,也可以是 JtaTransactionManager(如果 JdbcTemplate 使用容器提供的 JNDI 数据源)。 您可以将您的方法注释为 @Transactional 或使用 PlatformTransactionManager 以编程方式创建事务。
JdbcTemplate uses a DataSource, so it's not guaranteed that you will use the same connection for the LOCK TABLE statement and whatever you're going to do in the next call to JdbcTemplate. So it's important that you do this in a transaction. Set up a PlatformTransactionManager, either a DataSourceTransactionManager on the JdbcTemplate's DataSource, or a JtaTransactionManager if the JdbcTemplate is using a container-provided JNDI DataSource. You can annotate your method as @Transactional or create a transaction programmatically using the PlatformTransactionManager.