Pergunta

Estamos procurando usar o JDBCTemplate para acessar o banco de dados - mas temos muitas conexões DB diferentes, que cada classe pode usar; portanto, injetar o JDBCTemplate não é um caixa eletrônico de opção. Então, se fizermos um

jdbcTemplate = new JdbcTemplate(dataSource);

Qual será a política de transação? Compromisso automático está desligado no banco de dados.

Foi útil?

Solução

Você pode configurar cada javax.sql.DataSource Objeta-se para ativar a compensação automática se isso fizer o trabalho ou desativar a compensação automática e escreva a lógica de transação programaticamente.

Ambos java.sql.Connection e a javax.sql.DataSource A classe possui métodos para ativar/desativar o comando automático.

Em relação à injeção de dependência e primavera, você ainda pode injetar um objeto DataSource no seu repositório. Se você também deixar cada repositório estender o org.springframework.jdbc.core.support.JdbcDaoSupport classe, então você tem um objeto JDBCTemplate disponível para você com o derivado getJdbcTemplate() método.

Você também pode deixar o Spring lidar com o manuseio de transações para você. Sem um gerenciador de transações XA, você precisa de um gerenciador de transações para cada fonte de dados. Com muitos gerentes de transação, suporte de transação declarativa com o @Transactional A anotação é impossível. No entanto, você pode injetar o gerenciador de transações na sua classe de serviço. Isso é descrito na documentação de referência aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top