Giriş
Şu satırı dahil ederiz.
Normalde bu koda gerek yok. TransactionTemplate sınıfını @Autowire etmek yeterli.
Şu satırı dahil ederiz.
import org.springframework.transaction.support.TransactionTemplate;
constructorNormalde bu koda gerek yok. TransactionTemplate sınıfını @Autowire etmek yeterli.
Örnek
Şöyle yaparız.
Şöyle yaparız
Şöyle yaparız.
@Primary
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager pt = new JpaTransactionManager();
pt.setEntityManagerFactory(entityManagerFactory().getObject());
pt.setPersistenceUnitName("sico");
return pt;
}
@Bean
public TransactionTemplate transactionTemplate() {
return new TransactionTemplate(transactionManager());
}
execute metoduŞöyle yaparız
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
em.createNativeQuery("TRUNCATE TABLE MyTable").executeUpdate();
}
});
executeWithoutResult metodu
Kod şöyle
default void executeWithoutResult(Consumer<TransactionStatus> action)
throws TransactionException {
this.execute((status) -> {
action.accept(status);
return null;
});
}
Örnek
Repository.save() çağrısı yapabiliriz. Şöyle yaparız
List<Book> books = ...
transactionTemplate.executeWithoutResult(consumer -> repository.saveAll(books));
setPropagationBehavior metodu
TransactionTemplate transaction = new TransactionTemplate(transactionManager);
transaction.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
for (Order order : orders) {
transaction.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
service.saveOrUpdateOrder(order);
}
});
}
Hiç yorum yok:
Yorum Gönder