Witam,
Byłbym wdzieczy w wytłumaczeniu, dlaczego autor książki umieszcza obiekt Session w ThreadLocal??
Nie lepiej było by sprawdzać w metodzie getSession czy fabryka jest otwarta??
klasa DAO :
package utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class DAO {
private static final ThreadLocal session = new ThreadLocal();
private static final SessionFactory sessionFactory = new Configuration().configure("configuration/hibernate.cfg.xml").buildSessionFactory();
public static Session getSession() {
Session session = (Session) DAO.session.get();
if( session == null) {
session = sessionFactory.openSession();
DAO.session.set(session);
}
return session;
}
public void begin() {
getSession().beginTransaction();
}
public void commit() {
getSession().getTransaction().commit();
}
public void rollback() {
try {
getSession().getTransaction().rollback();
getSession().close();
DAO.session.set(null);
} catch(Exception ex) {
ex.printStackTrace();
}
}
}