Hibernate - как работать с hibernate из отдельного потока?
От: _Stash Россия  
Дата: 14.05.10 12:58
Оценка:
Здравствуйте,
Сразу только скажу, что с hibernate (и вообще ORM) только со вчерашнего дня общаюсь.
Реализовал по примерам примерно то, что мне нужно.
Суть проблемы — грубо говоря, из метода main() все работает)
А вот когда тот же код запускается из другого потока — поток просто завершается, без каких-либо исключений.
Может, конечно с потоком что-то не так, но я подозреваю, что проблема в открытии сессии (судя по отладке).
Очевидно что метод, описанный в руководстве:
public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();
    private static SessionFactory buildSessionFactory() {
       try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory();
        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
       return sessionFactory;
    }
}
и/или опция конфигурации
<!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

не годится, если с сессией работают из другого потока. О чем, там, кстати, и написано.
Но как правильно это надо реализовать в моем случае — не понимаю.
вот последние сообщения логгера
16:42:12 [DBAdapterToCKKI] root                           In HibernateUtil try-clause
16:42:12 [DBAdapterToCKKI] Connect                        In HibernateUtil try-clause via loggerConnect DEBUG*****
java hibernate multithreading
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.