Il programma sta ancora girando, ma credo che la soluzione sia questa:

codice:
public class DaoImpl implements Dao{
    private static final SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();  // Qui creo una sessione
    
   public Session openConnection(){
       Session sessione;
     
          sessione=sessionFactory.openSession();
       
     return sessione;
   } 
   
   public Scheduler  readScheduler()throws Exception{
        
       Session conn=openConnection();
      
        String queryString= "select * from scheduler";
        
         Query query = conn.createSQLQuery(
            queryString)
           .addEntity(Scheduler.class);
       
          List lista = query.list();
          Scheduler scheduler=(Scheduler) lista.get(0);


       conn.close();
       
     return scheduler;
   }
   
   public void  UpdateScheduler(Scheduler sc) throws Exception{
       
        Session conn=openConnection();
        conn.beginTransaction();
         conn.update(sc);
        conn.getTransaction().commit();
      conn.close();
   }
   
   public List<Sendreport> getUtentiPerReport(String frequenza) throws Exception{
       
       Session conn=openConnection();
       
       String queryString="select * from sendreport r where ";
       int flag=1;
       if(frequenza.equalsIgnoreCase("Hourly")){
           queryString+="r.Hourly= :flag";
       }
       if(frequenza.equalsIgnoreCase("Daily")){
           queryString+="r.Daily= :flag";
       }
       if(frequenza.equalsIgnoreCase("Weekly")){
           queryString+="r.Weekly= :flag";
       }
       if(frequenza.equalsIgnoreCase("Monthly")){
           queryString+="r.Monthly= :flag";
       }
       
       Query query = conn.createSQLQuery(
            queryString)
            .addEntity(Sendreport.class)
            .setParameter("flag",flag);   
       
       List listaUtenti = query.list();
       
       conn.close();
     return listaUtenti;
   }
Ho spostato sessionFactory dal metodo openConnection() sotto la lista degli attributi della classe DaoImpl così ogni volta che viene chiamato il metodo openConnection non viene generata una nuova connessione ma apre sempre la stessa... Siete d'accordo con me??