Использование источника данных с транзакцией с использованием Spring - PullRequest
0 голосов
/ 24 января 2020

Я работаю как часть старого приложения j2ee (обычное приложение без поддержки Spring или Hibernate)
Приложение предоставляет следующий метод:

public DataSource getConnectionDataSource();

DataSource правильно инициируется в заданную c схему БД продуктом.

Когда я хочу сделать запрос к БД, я создаю объект jdbcTemplate и запрашиваю подобное:

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("PRINT_LOCA",printerLocation);
DataSource printersSchemaDS = context.getCommonServices().getConnectionDataSource("printersSchema");

NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(printersSchemaDS);
String printerId = jdbcTemplate.queryForObject("select printerId  from printers where printer_location=:PRINT_LOCA ",parameters,String.class);

Мой вопрос заключается в том, как выполнить несколько операторов Update SQL в одной транзакции когда у меня есть только объект DataSource?
Я вижу, что в Spring есть TransactionTemplate, но возможно ли его инициализировать одним объектом DataSource?

Спасибо!

1 Ответ

1 голос
/ 24 января 2020

Попробуйте взять одно соединение из источника данных, затем используйте обычную ручную транзакцию jdb c:

 try (Connection con = datasource.getConnection();) {

 con.setAutoCommit(false);
 // insert logic
 con.commit();
 } catch (SQLException e) {
  // handle exception
  con.rollback();
 }

Полный пример здесь: https://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...