In Spring Boot with JdbcTemplate, transactions can be managed using the TransactionTemplate or by using the @Transactional annotation.
Example:@Component
public class EmployeeService {
private final JdbcTemplate jdbcTemplate;
private final TransactionTemplate transactionTemplate;
public EmployeeService(JdbcTemplate jdbcTemplate, PlatformTransactionManager transactionManager) {
this.jdbcTemplate = jdbcTemplate;
this.transactionTemplate = new TransactionTemplate(transactionManager);
}
public void transferSalary(int employeeId1, int employeeId2, int amount) {
transactionTemplate.execute(status -> {
try {
jdbcTemplate.update("UPDATE employee SET employeeSalary = employeeSalary - ? WHERE employeeId = ?", amount, employeeId1);
jdbcTemplate.update("UPDATE employee SET employeeSalary = employeeSalary + ? WHERE employeeId = ?", amount, employeeId2);
return true;
} catch (Exception e) {
status.setRollbackOnly();
return false;
}
});
}
}
In the above example, we have a transferSalary method that transfers an amount from one employee to another. The method is wrapped in a transactionTemplate.execute() call, which manages the transaction.
If an exception is thrown during the transaction, the transaction will be rolled back.
We can also use the @Transactional annotation to manage transactions.
@Service
@Transactional
public class EmployeeService {
private final JdbcTemplate jdbcTemplate;
public EmployeeService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public void transferSalary(int employeeId1, int employeeId2, int amount) {
jdbcTemplate.update("UPDATE employee SET employeeSalary = employeeSalary - ? WHERE employeeId = ?", amount, employeeId1);
jdbcTemplate.update("UPDATE employee SET employeeSalary = employeeSalary + ? WHERE employeeId = ?", amount, employeeId2);
}
}
Have Questions? Post them here!
- Create a Zip file using Java Code programmatically
- Eclipse : A java Runtime Environment (JRE) or Java Development kit (JDK) must be available
- How to Sort a LinkedList in Java
- Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver
- How to declare and initialize Array in Java Programming
- [Fix] java: integer number too large compilation error
- Java JDBC Connection with MySQL Driver in VS Code + Troubleshooting
- Reading .xls and .xlsx Excel file using Apache POI Java Library
- IntelliJ: Error: Could not find or load main class, java.lang.ClassNotFoundException
- How to get Client IP address using Java Code Example
- Truncate table using Java JDBC Example
- Struts 2 : There is no Action mapped for namespace [/] and action name [form] associated with context path [/proj]
- How to get file path in Idea IntelliJ IDE
- Java Generics explained with simple definition and examples
- Java SE 8 Update 301 available with various bug fixes and security improvements
- Java: Collect Stream as ArrayList or LinkedList
- Java JDBC Connection with PostgreSQL Driver Example
- How to check if Java main thread is alive
- How to fix Java nio NoSuchFileException wile reading a file
- Java 8+ get Day of the Week Examples with LocalDateTime, DateTime, ZonalDateTime and Instant classes
- Ways to Convert Integer or int to Long in Java
- [Java] How to throws Exception using Functional Interface and Lambda code
- [Fix] Spring Boot: mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
- Java: The value of the local variable string is not used
- Java JDBC: Insert Java 8 LocalDate and Time using PreparedStatement
- [Vi/Vim] How to move cursor to the start of a line - MacOS
- Multiple Microsoft 365 Services Down (Outlook, Teams, SharePoint, OneDrive) - 25 January 2023 (Solved) - Microsoft
- How to Generate Self-Signed OpenSSL certificate in three easy steps - HowTos
- Java Jackson ObjectMapper Class with Examples - Java
- How to initiate a photo request on iPhone from Mac Monterey - iOS
- Setting Java_Home Environment variable on Windows Operating System - Java
- Java JDBC: Insert Java 8 LocalDate and Time using PreparedStatement - Java
- Twitch chat down, error loading data, content unavailable, streaming problem - News