Im Frühjahr verwaltete Transaktionen ohne @Transactional-Annotation
Ich verwende Spring-Annotationen, um meine Transaktionen wie folgt zu verwalten:
@Transactional(readOnly = true)
public class AlertServiceImpl implements AlertService {
private AlertDAO alertDAO;
public List<Alert> getAlerts(){
List<Alert> alerts = alertDAO.getAlerts();
return alerts;
}
}
Ich frage mich, was passiert, wenn ich die Anmerkung vergesse:
// 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;
}
}
Wenn die alertDAO-Implementierung folgt:
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;
}
}
Hibernate ermöglicht es mir anscheinend, Daten aus der Datenbank abzurufen, auch ohne die Annotation.
Was sind die Folgen dieser Art von Nachlässigkeit und was sind die schlimmsten möglichen Szenarien?