Transações gerenciadas por primavera sem anotação @Transactional
Estou usando anotações do Spring para gerenciar minhas transações da seguinte maneira:
@Transactional(readOnly = true)
public class AlertServiceImpl implements AlertService {
private AlertDAO alertDAO;
public List<Alert> getAlerts(){
List<Alert> alerts = alertDAO.getAlerts();
return alerts;
}
}
Gostaria de saber o que acontece se eu esquecer a anotação:
// Oops! Forgot to use transactional annotation
public class AlertServiceImpl implements AlertService {
private AlertDAO alertDAO;
public List<Alert> getAlerts(){
List<Alert> alerts = alertDAO.getAlerts();
return alerts;
}
}
Quando a implementação alertDAO é a seguinte:
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
// no annotation here either
public class HibernateAlertDAO extends HibernateDaoSupport implements AlertDAO {
public List<Alert> getAlerts(){
// some implementation details that define queryString
Query query = getSession().createQuery(queryString);
List<Alert> alerts = query.list();
return alerts;
}
}
Parece que o Hibernate me permite buscar dados do banco de dados mesmo sem a anotação.
Quais são as consequências desse tipo de descuido e quais são os piores cenários que podem acontecer?