I\'m using Spring annotations to manage my transactions like so:
@Transactional(readOnly = true)
public class AlertServiceImpl implements AlertService {
In your scenario your DAO will execute without transaction, most probably with auto-commit.
If you want to avoid this kind of mistake in future and require all your services to run in transaction you can protect DAO layer with following @Transactional annotation:
@Transactional(propagation = MANDATORY)
public class HibernateAlertDAO extends HibernateDaoSupport implements AlertDAO {
...
}
This annotation will require service layer to declare transaction and will throw exception otherwise.