2009-05-14 10 views
5

Ich migriere gerade eine unserer Anwendungen von reinem JDBC zu Spring JDBCTemplate. Ich habe mich gefragt, wie man eine Schreibsperre für eine Tabelle erstellt. Führe ich einfach eine "LOCK TABLE foo" Abfrage aus oder gibt es eine generalisierte Möglichkeit, dies in JDBCTemplate zu tun?Spring JDBCTemplate-Tabellensperrung mit MySQL

Danke!

Antwort

9

JdbcTemplate verwendet eine DataSource. Es ist daher nicht garantiert, dass Sie die gleiche Verbindung für die LOCK TABLE-Anweisung und für den nächsten Aufruf von JdbcTemplate verwenden. Daher ist es wichtig, dass Sie dies in einer Transaktion tun. Richten Sie einen PlatformTransactionManager ein, entweder einen DataSourceTransactionManager in der DataSource von JdbcTemplate oder einen JtaTransactionManager, wenn JdbcTemplate eine vom Container bereitgestellte JNDI-DataSource verwendet. Sie können Ihre Methode als @Transactional mit Anmerkungen versehen oder eine Transaktion mithilfe von PlatformTransactionManager programmgesteuert erstellen.