Spring управляемые транзакции без аннотации @Transactional
Я использую аннотации Spring для управления своими транзакциями следующим образом:
@Transactional(readOnly = true)
public class AlertServiceImpl implements AlertService {
private AlertDAO alertDAO;
public List<Alert> getAlerts(){
List<Alert> alerts = alertDAO.getAlerts();
return alerts;
}
}
Мне интересно, что произойдет, если я забуду аннотацию:
// 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;
}
}
Когда реализация alertDAO следующая:
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 позволяет мне получать данные из базы данных даже без аннотации.
Каковы последствия такого рода невнимательности и каковы наихудшие сценарии, которые могут произойти?