2011-07-09 3 views
0

Я реализовал DAO следующим образом,проблема в спящем режиме DAO (сессия уже закрыта !!)

// псевдокод

public MyDAO{ 

    private Session session; 
    MYDAO{ 
    this.setSession(HibernateUtil.getSessionFactory().getCurrentSession()); 
    } 

    public void save(MyObj obj){ 
    //save obj in db 
    } 
} 

Теперь я использовал дао, чтобы сохранить один объект он прекрасно работает. Теперь, если сохранить два объекта внутри отдельной передам я получаю ошибку говоря «сеанс уже закрыт»

EG

Feature feature = new Feature(); 
feature.setFeatureName("testf333"); 

FeatureDAO featureDAO = new FeatureDAO(); 
Transaction tx = featureDAO.getSession().beginTransaction(); 
featureDAO.makePersistent(feature); 
tx.commit(); 
System.out.println("successfully save in db " + feature.getId()); 


tx = featureDAO.getSession().beginTransaction(); //getting error here 
Feature feature4 = new Feature(); 
feature4.setFeatureName("4444"); 
featureDAO.makePersistent(feature4); 

tx.commit(); 
System.out.println("successfully save in db " + feature.getId()); 

Я думаю, что эта проблема может быть решена путем проверки закрытия сеанса .О, где я могу установить новую сессию, потому что я использую сессию DAO начать передаст

+0

Почему никто не отвечает? – akshay

+1

Это раннее субботнее утро в США, поэтому многие из нас могут спать. Ответы не всегда бывают быстрыми. –

ответ

2

Вместо того, чтобы пытаться удержать Session в вашем MyDAO, вы, вероятно, лучше от держась только за SessionFactory и получать сессию, когда это необходимо, определив свой метод getSession в MyDAO в

public Session getSession() { 
    return sessionFactory.getCurrentSession(); 
} 

или просто сохранить ничего, связанное с обработкой сессии в MyDao на все и использовании

public Session getSession() { 
    return HibernateUtil.getSessionFactory().getCurrentSession(); 
} 

Сессия спящего режима привязана к определенной теме и закрыта при фиксации, но метод getCurrentSession() фабрики сеансов получает новый сеанс по мере необходимости, так что вам не нужно беспокоиться об этом.

+0

, но тогда у меня есть проблема как mentioend в редакции – akshay

+0

Я не вижу редактирования, так как название меняет часы назад. Какова ваша текущая проблема? –

Смежные вопросы