Pentru rapoarte complexe, interogări de analiză cu zeci de clauze JOIN sau procesări masive de date (batch inserts), generarea automată de entități JPA poate aduce un consum inutil de memorie și latență. JdbcTemplate oferă o punte directă și simplificată peste JDBC.
Se ocupă automat de deschiderea și închiderea sigură a conexiunilor la baza de date, prevenirea scurgerilor de resurse (resource leaks) și maparea rândurilor SQL prin interfețe de tip RowMapper.
Exemplu: Interogare SQL directă și mapare într-un Record Java
package ro.dexblog.demo.dao;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
public record UserSummary(Long id, String email, double totalSpent) {}
@Repository
public class AnalyticsDao {
private final JdbcTemplate jdbcTemplate;
public AnalyticsDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public UserSummary getUserSummary(Long userId) {
String sql = "SELECT u.id, u.email, COALESCE(SUM(o.amount), 0) AS total_spent " +
"FROM users u LEFT JOIN orders o ON u.id = o.user_id " +
"WHERE u.id = ? GROUP BY u.id, u.email";
return jdbcTemplate.queryForObject(sql, (rs, rowNum) -> new UserSummary(
rs.getLong("id"),
rs.getString("email"),
rs.getDouble("total_spent")
), userId);
}
}
Întrebări & Exemple de Cod:
Clasa JdbcTemplate în Spring BootAi o nelămurire despre utilizarea comenzii
Clasa JdbcTemplate în Spring Bootsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.