В моем веб-приложении я использую шаблон с сеансом за запрос. У меня есть пул соединений и открытые сеансы в Filter
с использованием SessionFactory.openSession()
, а затем Session.close()
.Как отключить сеанс Hibernate
В этом же приложении для сложного процесса я хочу использовать сеанс за разговор. Я попытался открыть вторую сессию с SessionFactory.openSession()
, но впоследствии вызов Session.disconnect()
ничего не делает.
Как я могу вручную подключать/отключать сеансы? Это мой файл конфигурации Hibernate:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost/.....</property>
<property name="hibernate.connection.username">...</property>
<property name="hibernate.connection.password">...</property>
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.test_connection_on_checkout">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
</session-factory>
</hibernate-configuration>
код Java:
longSession = mySessionFactory.openSession();
System.out.println(((SessionImplementor) longSession).isConnected());
longSession.disconnect();
System.out.println(((SessionImplementor) longSession).isConnected());
Это выводит true
дважды ...
Я знаю, но везде, где я читал о сеансах за разговор, но не знают, что на самом деле назвать его использовать , Как настроить Hibernate для отключения сеанса связи? – Oliv
Как открыть сеанс для отключения? – Oliv
@Oliv Я не понимаю, почему вы не хотите использовать 'session.close()'? –