Мой код ниже. Возможно, я использую его много раз подобным образом, то есть простые слова, я управляю сессией и транзакцией таким образом:спящий режим закрытия или нет?
List<Login> users= null;
try{
session=HibernateUtil.getSessionFactory().getCurrentSession();
tx=session.beginTransaction();
users=session.createQuery("from Login").list();
tx.commit();
}catch(Exception e){System.out.println("commit exception:"+e);
try {tx.rollback();} catch (Exception ex) {System.out.println("rollback exception:"+ex);}
}finally{if(session!=null && session.isOpen()){session.close();}}
return users;
Теперь, когда я первым запустить службу базы данных (с помощью MySQL) и проверить из команды подскажите, используя этот запрос ...
show status like 'Conn%';
... результат:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 2 |
+---------------+-------+
Когда я начинаю мое приложение и использовать его. После открытия нескольких страниц и запроса одного и того же. Я получаю соединения как 6, я даже видел выше 20.
Теперь я хотел бы знать, что спящий режим закрывает соединения или нет?
Я обрабатываю все транзакции таким образом, я перекрещиваюсь и проверяю любой блок кода, не закрывая сеанс.
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/shareapp
</property>
<property name="connection.username">pluto</property>
<property name="connection.password">admin</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
</session-factory>
HibernateUtil класс
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
AnnotationConfiguration config = new AnnotationConfiguration();
config.addAnnotatedClass(Login.class);
config.addAnnotatedClass(FilesInfo.class);
config.addAnnotatedClass(FilesShare.class);
config.configure("hibernate.cfg.xml");
// new SchemaExport(config).create(true,true);
sessionFactory = config.buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Спасибо!
как вы установить соединение JDBC? Вы используете объединенное соединение или нет? отправьте конфигурацию datasource, пожалуйста, – WeMakeSoftware
. О, извините, я добавил его, пожалуйста, посмотрите. :) – Aadam
Вы также можете отправить код класса HibernateUtil? – fmodos